首页 > 编程知识 正文

二叉树层序遍历c++,中序遍历二叉树的非递归算法

时间:2023-05-06 15:37:11 阅读:34465 作者:298

详细图解二叉树中的顺序遍历(非递归)二叉树中的顺序递归语义LeetCode主题94源代码执行结果的详细图解

二叉树的中序递归意义

中顺遍历首先遍历左子树,然后访问根节点,最后遍历右子树。 如果二叉树为空,则结束并返回。 否则:

)1)左子树按中序遍历

)2)访问根节点

)3)按中序遍历右部分树

如图1所示二叉树那样,中顺扫描的结果: DBEAFC

LeetCode主题94提供二叉树的根节点root,并返回其中继遍历。

输入:根=[ 1,null,2,3 ]

输出: [ 1,3,2 ]

输入: root=[ 1,2 ]

输出: [ 2,1 ]

详细图解

将左链依次放入堆栈中,取出堆栈最上面的元素保存,放入该元素右边的孩子、右边的孩子的左链中。 重复操作直到堆栈为空。

源代码下面显示源代码。

/* * definitionforabinarytreenode.* struct treenode { * intval; * TreeNode *left; * TreeNode *right; *treenode(3360val )0)、left (nullptr )、right (nullptr ) * treenode (intx ) 3360val )、left (nullptr ) ) ) )。 TreeNode *left、treenode*right(:val ) x )、left )、right ) {}*; //# includestackclassolution (public : vectorintinordertraversal (treenode * root ) stacktreenode ) s; //节点设置存储TreeNode *temp=root的堆栈; 矢量int ans; wile(temp!=NULL ()//先堆栈左链s.push ) (temp ); temp=temp-left; } while (! s.empty () /检索堆栈中的元素temp=s.top ); s.pop (; ans.push_back(temp-val; //保存结果temp=temp-right; //进入右链条While(TEMP!=空(s.push ) ) temp; temp=temp-left; } }返回Ans; }; 执行结果

时间超过百分之百

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。