二叉树中序递归、非递归遍历
来源:互联网 发布:java整型数组转字符串 编辑:程序博客网 时间:2024/06/08 16:02
二叉树如下:
二叉树前序序列化表示如下:
1 2 4 7 -1 -1 8 -1 -1 5 -1 -1 3 6 -1 -1 -1
-1代表左右子树为NULL的情况,使用前序序列构造二叉树。
二叉树结构体表示如下:
struct TreeNode{TreeNode(int value):left(NULL),right(NULL),val(value){ }TreeNode *left;TreeNode *right;int val;};
(一)二叉树中序非递归遍历:
二叉树中序遍历,使用栈来模拟,与前序非递归遍历的唯一区别在于,打印当前结点值的位置不同
void InoderTraverseTree(TreeNode *root){if(root == NULL) return;stack<TreeNode*> s;s.push(root);TreeNode *curnode = NULL;while(!s.empty()){while(curnode = s.top()) s.push(curnode->left);s.pop();if(!s.empty()){curnode = s.top();s.pop();std::cout << curnode->val << " "; //中序在此打印s.push(curnode->right);}}}
(二)二叉树中序递归遍历:
void InoderTraverseTree_Recur(TreeNode *root){if(NULL == root) return;InoderTraverseTree_Recur(root->left);std::cout << root->val << " ";InoderTraverseTree_Recur(root->right);}
调用函数:
int main(void){TreeNode *root = NULL;//先序建立一棵树PreoderBuildTree(root);//中序非递归遍历InoderTraverseTree(root);std::cout << std::endl;//中序递归遍历InoderTraverseTree_Recur(root);std::cout << std::endl;}
0 0
- 二叉树中序遍历(递归+非递归)
- 二叉树中序递归、非递归遍历
- 二叉树中序遍历递归+非递归
- 非递归二叉树中序遍历
- 二叉树中序遍历非递归
- 二叉树中序遍历(非递归)
- 二叉树中序遍历非递归
- 二叉树中序遍历 递归和非递归遍历
- 二叉树中序遍历的非递归算法
- 二叉树中序遍历非递归算法.
- 二叉树中序遍历非递归算法详解
- 二叉树中序遍历的非递归算法
- 二叉树中序遍历非递归算法
- 二叉树中序遍历的非递归方法
- 二叉树中序遍历的非递归实现
- 二叉树中序遍历,非递归,用栈
- 二叉树中序遍历的非递归算法
- 二叉树中序遍历非递归算法
- JavaScript数组与对象(1)
- 第三周项目二本月有几天
- solr入门之自定义排序之构建自己的权重计算方法及相应的排序字段
- 我的第一个博客
- flask 及 python如何发163邮件
- 二叉树中序递归、非递归遍历
- HDU1108 欧几里得
- Android列表收缩与展开仿QQ好友列表(非常详细,附源码)
- 树莓派2——vnc服务开启
- HDU4283 You Are the One 区间DP
- 数组做数据成员(2)
- ios /解密 kvo
- Unity3D Terrain Settings 彻底搞懂 地形详细设置 全实验与解析 (三)Thickness
- iOS第三方库-CocoaLumberjack-DDLog 使用