我正在参加「掘金·启航计划」
引言
使用递归遍历。
- 停止条件:遍历到叶子结点
- 结果组合:不用定义内部函数放递归逻辑,外部函数放返回结果
- 数组的concat方法
前序遍历
遍历顺序:根节点,左子节点,右子节点
var preorderTraversal = function(root) {
if(!root) return []
return [root.val].concat(preorderTraversal(root.left), preorderTraversal(root.right))
};
中序遍历
遍历顺序:左子节点,根节点,右子节点
var inorderTraversal = function(root) {
if (!root) return []
return inorderTraversal(root.left).concat([root.val], inorderTraversal(root.right))
};
后序遍历
遍历顺序:左子节点,右子节点,根节点
var postorderTraversal = function(root) {
if(!root) return []
return postorderTraversal(root.left).concat(postorderTraversal(root.right), [root.val])
};