1.递归思想
思路:
1.对根结点的左子树进行中序遍历;
2.对根结点进行访问;
3.对根结点的右子树进行中序遍历。
代码:
参考:递归遍历二叉树
const TreeNode = {
val: 1,
left: {
val: 2,
left: {
val: 4,
},
right: {
val: 5
}
},
right: {
val: 3,
left: {
val: 6,
},
right: {
val: 7
}
}
};
var midOrderRecur = function(root) {
var list = [];
var midOrder = function(root) {
if (root == undefined) {
return;
} else {
midOrder(root.left);
list.push(root.val);
midOrder(root.right);
}
}
midOrder(root);
return list;
}
console.log(midOrderRecur(TreeNode));
2.迭代思想
const treeNode = {
val: 1,
left: {
val: 2,
left: {
val: 4,
},
right: {
val: 5
}
},
right: {
val: 3,
left: {
val: 6,
},
right: {
val: 7
}
}
};
var preOrder = function(root) {
var list = [];
const remStack = [];
while(root || remStack.length != 0) {
while (root) {
remStack.push(root);
root = root.left;
}
root = remStack.pop()
list.push(root.val);
root = root.right;
}
return list;
}
console.log(preOrder(treeNode));