varinorderTraversal=(root)=>{if(!root)return[]let res =[]consthelper=(node)=>{if(!node)returnhelper(node.left)
res.push(node.val)helper(node.right)}helper(root)return res
};
思路1:手动维护做栈 模拟递归
思路 模拟树的遍历模板
时间复杂度O(n) 空间复杂度为O(n)
代码实现
constinorderTraversal=(root)=>{let res =[], stack =[]if(!root){return res }while(root ||!stack.length){// 相当于不断递归找到 最左边的左节点while(root){
stack.push(root)
root = root.left
}// 返回上一层递归
root = stack.pop()// 对本节点进行操作
res.push(root.val)// 递归其右节点
root = root.right
}return res
};