Binary Tree Inorder Traversal
cheatsheet1999 opened this issue · 0 comments
cheatsheet1999 commented
Given the root of a binary tree, return the inorder traversal of its nodes' values.
Recursive Solution
var inorderTraversal = function(root, res = []) {
if(!root) return [];
if(root.left) root.left = inorderTraversal(root.left, res);
res.push(root.val);
if(root.right) root.right = inorderTraversal(root.right, res);
return res;
}
O(n) iterative solution is awesome!
/*
As long as there is root or stack has length, we loop over.
In the loop, if there is a root, we push root into stack and go see the left,
until there is no root on left subtree, then we find the nearest last root,
and put it into stack, then loop the right subtree.
*/
var inorderTraversal = function(root) {
let stack = [];
let res = [];
while(root || stack.length) {
if(root) {
stack.push(root);
root = root.left;
} else {
//find the nearst root
root = stack.pop();
res.push(root.val);
root = root.right;
}
}
return res
}