JS 二叉树遍历

2018-03-15  本文已影响0人  下一站深圳

二叉树有前序、中序、后序遍历

var root1 = {
  name: 'a',
  leftChild: {
    name: 'b',
    leftChild: {
       name: 'd'
    },
    rightChild: {
       name: 'e'
    }
  },
  rightChild: {
    name: 'c',
    leftChild: {
       name: 'f'
    }
  }
}

// 打印实现
// 前序遍历(中左右) abdecf
// 中序遍历(左中右) dbeafc
// 后序遍历(左右中) debfca


/** 递归方式**/
// 前序遍历
var ret = []
function preOrder(root) {  
  ret.push(root.name)
  if(root.leftChild) {
     preOrder(root.leftChild)
  }
  if(root.rightChild) {
     preOrder(root.rightChild)
  }
}
preOrder(root1)
console.info(ret.join(','))


// 中序遍历
var ret = []
function inOrder(root) {
  if(root.leftChild) {
     inOrder(root.leftChild)
  }
  ret.push(root.name)
  if(root.rightChild) {
     inOrder(root.rightChild)
  }
}
inOrder(root1)
console.info(ret.join(','))



// 后序遍历
var ret = []
function postOrder(root) {
  if(root.leftChild) {
     postOrder(root.leftChild)
  }
  if(root.rightChild) {
     postOrder(root.rightChild)
  }
   ret.push(root.name)
}
postOrder(root1)
console.info(ret.join(','))
上一篇 下一篇

猜你喜欢

热点阅读