给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1
中序遍历,先遍历左节点>根节点>右节点,栈后进先出,先从根节点依次将左节点全部入栈,在一个个出栈,存入数组,在出栈的同时检查该节点是否有右节点,有则重复以上操作,没有则接着出栈
var inorderTraversal = function(root) {
let arr=[];
let stack=[];
let o=root
while(stack.length || o){
//将左节点全部入栈
while(o){
stack.push(o);
o=o.left;
}
//出栈
const n=stack.pop();
//存入数组,后续输出
arr.push(n.val);
//为遍历右节点做准备
o=n.right;
}
return arr
};