导航:js(es6)实现单向链表——链表添加、删除、反转方法的实现.
基础
1、在二叉树的遍历中,前中后是指父节点遍历的顺序
2、三个遍历中,左子树永远比右子树先遍历
- 前序遍历:根左右
- 中序遍历:左根右
- 后序遍历:左右中
举例说明
-
前序遍历:ABDC
-
中序遍历:DBAC
-
后序遍历:DBCA
ES6 代码实现
节点类
一个节点有左右指针和自身的value三个属性
class Node{
constructor (data){
this.left = null
this.right = null
this.value = data
}
}
树类
class Tree{
constructor (){
this.root = null
}
}
插入节点方法
这里构建的是二叉搜索树,即父节点的值大于左节点的值,小于右节点的值
以下insertByFather方法会判断新节点要插入到二叉搜索树的哪个位置,insert方法用来创建节点并调用insertByFather方法。
//根据给出的父节点,判断将新节点插在其左还是其右
insertByFather(node, newNode) {
//如果新节点value小于父节点value,则插入父节点左子树上,否则插入右子树上
if(newNode.value < node.value){
//如果父左子树存在,则递归判断插入,否则新节点就是父左子节点
if(node.left){
insertNode(node.left, newNode)
}else{
node