中序遍历:
var inorderTraversal = function(root) {
const res = [];
const stack = [];
let node ;
if(root!==null) stack.push(root);
while(stack.length>0) {
node = stack.pop();
if(node != null) {
if(node.right) stack.push(node.right);
stack.push(node);
stack.push(null);
if(node.left) stack.push(node.left);
} else {
node = stack.pop();
res.push(node.val);
}
}
return res;
};
前序遍历:
var inorderTraversal = function(root) {
const res = [];
const stack = [];
let node ;
if(root!==null) stack.push(root);
while(stack.length>0) {
node = stack.pop();
if(node != null) {
if(node.right) stack.push(node.right);
if(node.left) stack.push(node.left); // 改变两行代码的位置
stack.push(node);
stack.push(null);
} else {
node = stack.pop();
res.push(node.val);
}
}
return res;
};
后序遍历:
var inorderTraversal = function(root) {
const res = [];
const stack = [];
let node ;
if(root!==null) stack.push(root);
while(stack.length>0) {
node = stack.pop();
if(node != null) {
stack.push(node);
stack.push(null); // 与之前比也是改变顺序
if(node.right) stack.push(node.right);
if(node.left) stack.push(node.left);
} else {
node = stack.pop();
res.push(node.val);
}
}
return res;
};