码迷,mamicode.com
首页 > 编程语言 > 详细

[算法]二叉树的非递归遍历算法

时间:2019-07-28 21:27:44      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:span   val   dai   tac   先序遍历   div   https   col   方法   

1.二叉树的非递归中序遍历算法

二叉树的中序遍历方法是:左中右,因此一开始会顺着根节点的左孩子一直往下(这点和先序遍历一样,这也是二者前面部分代码很相似的原因),到最后一个左孩子时尝试把它的右孩子塞进栈内,然后顺着它的的左孩子而下,直到不能访问为止。利用的栈FILO的特性,对每个节点都进行顺左孩子而下即可。

上代码:

 1   void inOrder(TreeNode* root,vector<int>& inOrder)
 2   {
 3     stack<TreeNode*>st;
 4     TreeNode* p = root;
 5     while (p != nullptr || !st.empty())
 6     {
 7       while (p != nullptr)
 8       {
 9         st.push(p);
10         p = p->left;
11       }
12       if (!st.empty())
13       {
14         auto top = st.top();
15         inOrder.push_back(top->val);
16         st.pop();
17         p = top->left;
18       }
19     }
20   }

 

具体实现可以参考这篇文章:https://www.jianshu.com/p/49c8cfd07410,当然我的思(dai)路(ma)也是从这里获(chao)取(xi)的(??保命)

[算法]二叉树的非递归遍历算法

标签:span   val   dai   tac   先序遍历   div   https   col   方法   

原文地址:https://www.cnblogs.com/Swetchine/p/11260926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!