二叉树前序,中序,后序遍历的非递归实现
2023-06-13 09:16:13 时间
阿里二面的算法题
非递归写法
前序遍历
void pretOrder(TreeNode *root){
if(root==nullptr) return root;
TreeNode *p=root;
stack<TreeNodr *> st;
while(p || !st.empty()){
while(p){
st.push(p);
cout<<p->val;
p=p->left;
}
p=st.top();
st.pop();
p=p->right;
}
}
中序遍历
void inOrder(TreeNode *root){
if(root==nullptr) return root;
TreeNode *p=root;
stack<TreeNodr *> st;
while(p || !st.empty()){
while(p){
st.push(p);
p=p->left;
}
p=st.top();
cout<<p->val;
st.pop();
p=p->right;
}
}
后序遍历
void postOrder(TreeNode *root){
if(root==nullptr) return root;
TreeNode *p=root;
TreeNode *r=nullptr; //记录最近访问的节点
stack<TreeNodr *> st;
while(p || !st.empty()){
while(p){
st.push(p);
p=p->left;
}
p=st.top();
if(p->right && p->right!=r){
p=p->right;
}
else{
st.pop();
cout<<p->val;
r=p;
p=nullptr;
}
}
}
相关文章
- 二叉树
- 剑指offer No.4 重建二叉树(C++|Java版本)
- 剑指offer No.22 从上往下打印出二叉树
- 剑指offer No.24 二叉树中和为某一值的路径
- 平衡二叉树的数据结构_红黑树数据结构
- 非递归方式实现二叉树后序遍历_二叉树递归遍历
- 彻底弄懂二叉树的先序,中序,后序三种遍历与做题方式_二叉树的先序,中序,后序遍历例题
- 二叉树进行中序遍历的结果_层次遍历和中序遍历构建二叉树
- 你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
- 114. 二叉树展开为链表
- 145. 二叉树的后序遍历
- 每日一题(根据二叉树创建字符串,二叉树层序遍历,二叉树的层序遍历 II)
- JavaScript刷LeetCode拿offer-二叉树层序遍历篇
- 验证二叉树只有35%通过率?搞它
- js二叉树层序遍历
- 【数据结构】二叉树的遍历
- [javaSE] 数据结构(二叉树-遍历与查找)详解编程语言
- 算法-平衡二叉树详解编程语言
- Oracle中的二叉树表示法分析(oracle中二叉树写法)
- 二叉树的遍历算法(详细示例分析)
- 二叉树前序遍历的非递归算法
- C语言实现二叉树遍历的迭代算法