二叉树递归/非递归遍历
来源:互联网 发布:中小型企业网络建设 编辑:程序博客网 时间:2024/06/03 16:01
/*递归遍历*///前序遍历void preorder(TreeNode *root, vector<int> &path){ if(root != NULL) { path.push_back(root->val); preorder(root->left, path); preorder(root->right, path); }}//中序遍历void inorder(TreeNode *root, vector<int> &path){ if(root != NULL) { inorder(root->left, path); path.push_back(root->val); inorder(root->right, path); }}//后续遍历void postorder(TreeNode *root, vector<int> &path){ if(root != NULL) { postorder(root->left, path); postorder(root->right, path); path.push_back(root->val); }}/*非递归遍历*///非递归前序遍历void preorderTraversal(TreeNode *root, vector<int> &path){ stack<TreeNode *> s; TreeNode *p = root; while(p != NULL || !s.empty()) { while(p != NULL) { path.push_back(p->val); s.push(p); p = p->left; } if(!s.empty()) { p = s.top(); s.pop(); p = p->right; } }}//非递归中序遍历void inorderTraversal(TreeNode *root, vector<int> &path){ stack<TreeNode *> s; TreeNode *p = root; while(p != NULL || !s.empty()) { while(p != NULL) { s.push(p); p = p->left; } if(!s.empty()) { p = s.top(); path.push_back(p->val); s.pop(); p = p->right; } }}//非递归后序遍历-迭代void postorderTraversal(TreeNode *root, vector<int> &path){ stack<TreeNode *> s; TreeNode *p = root; TreeNode *pre = NULL;//保存上一次访问到的结点 while(p != NULL || !s.empty()) { while(p != NULL) //沿左子树一直往下搜索,直至出现没有左子树的结点 { s.push(p); p = p->left; } if(!s.empty()) { p = s.top(); if(p->right == NULL || p->right == pre) //表明p的右子树都访问过了,接下来就是访问这个结点了 { path.push_back(p->val); pre = p; s.pop(); p = NULL;//目的就是不让s再次压入p的左子树们 } else { p = p->right; } } }}
1 0
- 二叉树建立、递归、非递归遍历
- JAVA递归、非递归遍历二叉树
- 非递归、递归遍历二叉树!
- 二叉树的递归,非递归遍历
- 递归 和 非递归 遍历二叉树
- 二叉树 递归 与 非递归 遍历
- 二叉树递归,非递归,前中后遍历
- 二叉树递归/非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树遍历(层次,递归,非递归)
- 二叉树各种递归非递归遍历
- 二叉树遍历(递归,非递归)
- 二叉树遍历,递归,非递归
- 递归与非递归二叉树遍历
- 二叉树递归与非递归遍历
- 二叉树递归及非递归遍历
- 二叉树的递归非递归遍历
- 递归 非递归 遍历二叉树
- 读书笔记-《大话数据结构》第三章 线性表之链式存储结构
- 关于登陆或者注册界面EditText的设置
- 【集群】故障切换 [待修改]
- 计算机网络基础知识
- mysql创建函数(从别的地方复制过来)
- 二叉树递归/非递归遍历
- 设置环境变量
- Synchronized和ThreadLocal的区别
- Windows消息队列,UI线程,窗口以及消息处理方式总结
- 二叉索引树(树状数组)
- js判断手机端是否弹出软键盘
- iOS CoreAnimation专题——技巧篇(二)CAShapeLayer with Bezier Path - Layer世界的神奇画笔
- ListView点击事件失效(item里面有button按钮控件)解决方法
- 5G是一场革命