二叉树前序中序后序遍历--两行代码

86 阅读1分钟

我正在参加「掘金·启航计划」

引言

使用递归遍历。

  1. 停止条件:遍历到叶子结点
  2. 结果组合:不用定义内部函数放递归逻辑,外部函数放返回结果
  3. 数组的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])
};