二叉树的遍历(3):后序遍历
来源:互联网 发布:软件无响应怎么办 编辑:程序博客网 时间:2024/06/06 12:22
#include <iostream>#include <stack>#include <queue>using namespace std;typedef int TreeNodeElem;struct TreeNode { TreeNode* left; TreeNode* right; TreeNodeElem elem;};//递归遍历void postOrder_R(TreeNode* root, int(*visit)(TreeNode*)){ if (root == nullptr) { return; } postOrder_R(root->left, visit); postOrder_R(root->right, visit); visit(root);}//非递归遍历void postOrder(TreeNode* root, int(*visit)(TreeNode*)){ TreeNode* p = root; //当前正在访问的节点 TreeNode* q; //刚刚被访问过的节点 stack<TreeNode*> s; do { while (p != nullptr) { s.push(p); p = p->left; } q = nullptr; while (!s.empty()) { p = s.top(); s.pop(); if (p->right == q) //如果右孩子被访问过,或者右孩子为空,就访问 { visit(p); q = p; } else //右孩子不为空,而且还没有访问,必须先处理右子树 { s.push(p); p = p->right; break; } } } while (!s.empty());}
0 0
- 二叉树的遍历(3):后序遍历
- 二叉树的遍历(1)--先序遍历,中序遍历,后序遍历
- 二叉树的遍历(前序遍历、中序遍历、后序遍历)
- 二叉树的遍历代码(先序遍历,中序遍历,后序遍历)
- 二叉树的遍历,二叉树的创建、前序遍历、中序遍历、后序遍历 (转)
- 二叉树的后序遍历(二叉树)
- 二叉树的前序遍历,中序遍历和后序遍历(c#)
- 二叉树T 的先序遍历、中序遍历、后序遍历(递归实现)
- 二叉树---(3)前序遍历,中序遍历,后序遍历
- 数据结构--二叉树的遍历--求二叉树的深度(后序遍历)
- 二叉树的后序遍历和层次遍历
- 二叉树的遍历(2)--先序遍历,中序遍历,后序遍历(非递归)
- 【原创】二叉树的建立与遍历(前序遍历、中序遍历、后序遍历)
- 二叉树的先序遍历,后序遍历,中序遍历,层次遍历
- 二叉树的遍历 前序遍历 中序遍历 后序遍历
- 二叉树的遍历:前序遍历、中序遍历和后序遍历
- 数据结构--二叉树的遍历--复制二叉树(后序遍历)
- 二叉树的后序遍历
- nginx http请求的PHASE深度解析
- 数组中只出现一次的数字,时间复杂度O(n),空间复杂度O(1)的解法
- Activity标题(title)的显示和隐藏
- swift基础语法之控件使用02
- 学习笔记:架构 移动应用架构 开篇(一)
- 二叉树的遍历(3):后序遍历
- 7. Reverse Integer
- maven安装
- 截取本地URL请求(NSURLProtocol)
- CentOS 6.5 图文安装教程
- android Graphics(一):概述及基本几何图形绘制
- 经常需要将TXT文件转换成pdf的方法
- 技术博客
- 为mysql数据库建立索引