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

1.先序遍历:

先序遍历算法口诀:

1.访问节点

2.对根节点的子树进行先序遍历

3.对根节点的子树进行先序遍历

实例:

const bt = {
  val: 1,
  left: {
    val: 2,
    left: {
      val: 4,
      left: null,
      right: null
    },
    right: {
      val: 5,
      left: null,
      right: {
        val: 7,
        left: null,
        right: null
      }
    }
  },
  right: {
    val: 3,
    left: null,
    right: {
      val: 6,
      left: null,
      right: null
    }
  }
}

const preorder = (root) => {
  if (!root) { return; }
  console.log(root.val);
  preorder(root.left);
  preorder(root.right);
}

preorder(bt);

 

2.中序遍历:

中序遍历算法口诀:

1.对根节点的子树进行中序遍历

2. 访问节点

3.对根节点的子树进行中序遍历

实例:

const bt = {
  val: 1,
  left: {
    val: 2,
    left: {
      val: 4,
      left: null,
      right: null
    },
    right: {
      val: 5,
      left: null,
      right: {
        val: 7,
        left: null,
        right: null
      }
    }
  },
  right: {
    val: 3,
    left: null,
    right: {
      val: 6,
      left: null,
      right: null
    }
  }
}

const inorder = (root) => {
  if (!root) { return; }
  inorder(root.left);
  console.log(root.val);
  inorder(root.right);
}

inorder(bt);

 

3.后序遍历:

后序遍历算法口诀:

1.对根节点的子树进行后序遍历

2. 对根节点的子树进行后序遍历

3. 访问节点

实例:

const bt = {
  val: 1,
  left: {
    val: 2,
    left: {
      val: 4,
      left: null,
      right: null
    },
    right: {
      val: 5,
      left: null,
      right: {
        val: 7,
        left: null,
        right: null
      }
    }
  },
  right: {
    val: 3,
    left: null,
    right: {
      val: 6,
      left: null,
      right: null
    }
  }
}

const postorder = (root) => {
  if (!root) { return; }
  postorder(root.left);
  console.log(root.val);
  postorder(root.right);
}

postorder(bt);
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值