二叉树的先序、中序、后续遍历

100 阅读1分钟

二叉树的先序遍历是中间,左边,右边 中序遍历是左边,中间,右边 后序遍历是左边,右边,中间

递归的方法

//先序遍历
var inorderTraversal = function(root) {
//声明一个数组来存放结果
const arr= []
//声明递归函数
function inorder(root){
    if(!root) return//节点不存在就返回
    //如果存在就将节点的val  push进去arr
    arr.push(root.val)
    //进入递归
    inorder(root.left)
    inorder(root.right)
}
//调用函数
inorder(root)
//返回结果
return arr
}

迭代的方法

//中序遍历
var inorderTraversal = function(root) {
//声明一个数组来存放结果 
const res = []; 
//使用栈结构存放数据
const stack =[]; 
let cur = root; 
//设计一个循环 
while(cur != null || stack.length > 0){
if(cur != null){
stack.push(cur);
cur = cur.left; 
}else{ 
cur = stack.pop(); 
res.push(cur.val); 
cur = cur.right; 
} 
} 
return res;
}