题目:
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3输出: [1,3,2]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
先将最左边的节点全部加入栈中,然后逐个pop出来.将右子树重置为root,进行下一步的循环。
代码:
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var inorderTraversal = function(root) {
let a = []
let stack = []
while(root!=null || stack.length!=0){
while(root!=null){
stack.push(root)
root = root.left
}
root = stack.pop()
a.push(root.val)
root = root.right
}
return a;
};