二叉树——前序、中序、后序遍历
2023-09-11 14:16:24 时间
前序遍历
根 -> 左 -> 右
Tree.prototype.prevOrder=function(){
let stack = [];//表示栈
let values=[];//values存储的是节点的值
if(this.root==null){
return;
}
stack.push(this.root);//让根节点入栈
while(stack.lenght>0){
let currentNode = stack.pop();//弹出并获取栈顶的元素
//将栈顶元素的值放入数组
values.push(currentNode.value);
// 因为栈是先进后出,最后出来的应该是右节点,所以右节点先进
//让当前节点的右节点入栈,然后左节点入栈,必需确保左右节点不为空
let rightNode=currentNode.right;
let leftNode=currentNode.left;
if(rightNode!=null){
stack.push(currentNode.right);
}
if(leftNode!=null){
stack.push(currentNode.left);
}
}
return values;
}
中序遍历
左 -> 根 -> 右
Tree.prototype.middleOrder=function(){
let stack=[];
let values=[];
if(!this.root){
return;
}
let currentNode=this.root;
while(currentNode!=null||stack.length>0){
while(currentNode!=null){
stack.push(currentNode)
currentNode= currentNode.left;
}
if(stack.length>0){
let node=stack.pop();
values.push(node.value);
let rightNode=node.right;
currentNode=rightNode;
}
}
return values;
}
后序遍历
左 -> 右 -> 根
Tree.prototype.afterOrder=function(){
if(!this.root){
return;
}
let stack=[];
let values=[];
stack.push(this.root)
while(stack.length>0){
let node = stack.pop();
values.push(node.value)
if(node.left){
stack.push(node.left)
}
if(node.right){
stack.push(node.right)
}
}
return values.reverse();
}
相关文章
- 二叉树--创建、遍历
- 二叉树的创建与遍历(链式存储)
- 二叉树前序、中序、后序遍历相互求法
- Java实现 LeetCode 617 合并二叉树(遍历树)
- Java实现 LeetCode 617 合并二叉树(遍历树)
- Java实现 LeetCode 606 根据二叉树创建字符串(遍历树)
- Java实现 LeetCode 107 二叉树的层次遍历 II(二)
- Java实现 LeetCode 94 二叉树的中序遍历
- Java实现 LeetCode 94 二叉树的中序遍历
- 【二叉树】LeetCode 94. 二叉树的中序遍历【简单】
- LeetCode:105_Construct Binary Tree from Preorder and Inorder Traversal | 根据前序和中序遍历构建二叉树 | Medium
- LeetCode:94_Binary Tree Inorder Traversal | 二叉树中序遍历 | Medium
- ( “树” 之 前中后序遍历 ) 144. 二叉树的前序遍历 ——【Leetcode每日一题】
- 二叉树 Java 实现 前序遍历 中序遍历 后序遍历 层级遍历 获取叶节点 宽度 ,高度,队列实现二叉树遍历 求二叉树的最大距离
- 华为OD机试 - 二叉树中序遍历(Java & JS & Python)
- 【二叉树遍历】二叉树的四种遍历方式(先序遍历、中序遍历、后序遍历、层次遍历)
- 非递归方式实现二叉树四种遍历
- [LeetCode] 94. Binary Tree Inorder Traversal(二叉树的中序遍历) ☆☆☆
- js 实现二叉树中序遍历
- 二叉树(14)----由前序遍历和中序遍历重建二叉树,递归方式
- 算法实验-二叉树的创建和前序-中序-后序-层次 遍历
- 中序遍历 后序遍历 恢复二叉树
- 二叉树的先序遍历和非递归遍历
- wiki 3143 二叉树的前序、中序及后序遍历
- 二叉树的前序、中序、后序遍历(个人笔记)
- LeetCode 145. 二叉树的中序遍历
- 【LeetCode】105. 从前序与中序遍历序列构造二叉树