//封装二叉搜索树
function BinarySearchTree() {
function Node(key) {
this.key=key
this.left=null
this.right=null
}
//根节点属性
this.root=null
//insert方法 向外暴露给用户使用
BinarySearchTree.prototype.insert=function (key) {
//1.先根据key创建节点
let newNode=new Node(key)
//2.判断根节点是否有值
if(this.root==null){
this.root=newNode
}else{
this.insertNode(this.root,newNode)
}
}
BinarySearchTree.prototype.insertNode=function (node,newNode) {
//1.向左搜索 2.向右搜索
if(newNode.key<node.key){
if(node.left==null){
node.left=newNode
}else{
this.insertNode(node.left,newNode)
}
}else {
if(node.right==null){
node.right=newNode
}else{
this.insertNode(node.right,newNode)
}
}
}
BinarySearchTree.prototype.postOrderTraversalNode=function(node,handler){
if(node!=null){
//1.遍历左子树
this.postOrderTraversalNode(node.left,handler)
//2.遍历右子树
this.postOrderTraversalNode(node.right,handler)
handler(node.key)
}
}
}
//测试代码
let bst = new BinarySearchTree()
bst.insert(11)
bst.insert(7)
bst.insert(15)
bst.insert(5)
bst.insert(3)
bst.insert(9)
bst.insert(8)
bst.insert(10)
bst.insert(13)
bst.insert(12)
bst.insert(14)
bst.insert(20)
bst.insert(18)
bst.insert(6)
bst.insert(25)
bst.postOrderTraversal(function (key) {
resultString+=key+' '
})
console.log(resultString)
二叉树的后序遍历
最新推荐文章于 2024-07-26 11:41:15 发布