二叉树的前中后序遍历
Posted 沿着路走到底
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的前中后序遍历相关的知识,希望对你有一定的参考价值。
1
const bt =
val: 1,
left:
val: 2,
left:
val: 4,
left: null,
right: null,
,
right:
val: 5,
left: null,
right: null,
,
,
right:
val: 3,
left:
val: 6,
left: null,
right: null,
,
right:
val: 7,
left: null,
right: null,
,
,
// 1、递归
/*
前序遍历
访问根节点
对根节点的左子树进行先序遍历
对根节点的右子树进行先序遍历
*/
function preOrder (root)
if(!root) return
console.log(root.val)
preOrder(root.left)
preOrder(root.right)
/*
中序遍历
对根节点的左子树进行中序遍历
访问根节点
对根节点的右子树进行中序遍历
*/
function inOrder (root)
if(!root) return
inOrder(root.left)
console.log(root.val)
inOrder(root.right)
/*
后序遍历
对根节点的左子树进行后序遍历
对根节点的右子树进行后序遍历
访问根节点
*/
function postOrder (root)
if(!root) return
postOrder(root.left)
postOrder(root.right)
console.log(root.val)
// 2、迭代
/*
前序遍历
*/
function preOrder (root)
if(!root) return
const stack = [root]
while(stack.length)
const n = stack.pop()
console.log(n.val)
if(n.right) stack.push(n.right)
if(n.left) stack.push(n.left)
/*
中序遍历
*/
function inOrder (root)
if(!root) return
const stack = []
let p = root
while(stack.length || p)
while(p)
stack.push(p)
p = p.left
const n = stack.pop()
console.log(n.val)
p = n.right
/*
后序遍历
*/
function postOrder (root)
if(!root) return
const stack = [root]
const outputStack = []
while(stack.length)
const n = stack.pop()
outputStack.push(n)
if(n.left) stack.push(n.left)
if(n.right) stack.push(n.right)
while(outputStack.length)
const n = outputStack.pop()
console.log(n.val)
1
以上是关于二叉树的前中后序遍历的主要内容,如果未能解决你的问题,请参考以下文章