JavaScript二叉树(先序、中序、后序遍历)

以如下二叉树为例

{1,2,3,4,5,6,7,8,9,10,#,#,11,#,#,#,#,12,#,#,13}

序遍历

遍历的顺序:NLR(根节点->左结点->右结点)

/**
 * @param root TreeNode类
 * @return 一维数组
 */
function preorderTraversal(root) {
  const res = []
  preorder(root, res)
  return res
}
function preorder(root, res) {
  if (root == null) {
    return
  }
  // 先序遍历的位置
  res.push(root.val)
  preorder(root.left, res)
  preorder(root.right, res)
}

输出结果:[1,2,4,8,9,12,5,10,13,3,6,11,7]

中序遍历

遍历的顺序:LNR(左节点->根结点->右结点)

/**
 * @param root TreeNode类
 * @return 一维数组
 */
function inorderTraversal(root) {
  const res = []
  inOrder(root, res)
  return res
}
function inOrder(root, res) {
  if (root == null) {
    return
  }
  inOrder(root.left, res)
  // 中序遍历的位置
  res.push(root.val)
  inOrder(root.right, res)
}

输出结果:[8,4,12,9,2,10,13,5,1,6,11,3,7]

后序遍历

遍历的顺序:LRN(左结点->右结点->根节点)

/**
 * @param root TreeNode类
 * @return 一维数组
 */
function postorderTraversal( root ) {
  let res = [];
  postOrder(root, res);
  return res;
}
function postOrder(root, res){
  if(root == null)  return;
  postOrder(root.left);
  postOrder(root.right);
  // 后序遍历的位置
  res.push(root.val);
}

输出结果:[8,12,9,4,13,10,5,2,11,6,7,3,1]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值