K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
默认二叉树节点定义为struct TreeNode {int val; TreeNode *left; TreeNode *right;},所有DFS迭代实现均采用栈作为辅助数据结构。
struct TreeNode {int val; TreeNode *left; TreeNode *right;}
实现前序遍历迭代版时,访问根节点后,应先将左子节点压入栈,再压入右子节点,才能保证遍历顺序正确。
中序遍历迭代实现必须额外标记节点是否已访问,否则无法得到正确的遍历序列。
后序遍历的迭代实现可以通过修改前序遍历的压栈顺序,再将结果集反转得到。
三种DFS迭代实现的空间复杂度最坏情况均为O(logn)。