綜述:基於二叉樹數據結構實現排序,,在百度搜索排序的時候,如果使用冒泡排序,會存在很大的性能問題,如果使用二叉樹排序,性能將有大的提高。
1.實現一個二叉樹數據結構
function BinaryTree(){
var Node=function(key){
this.key=key;
this.left=null;
this.right=null;
};
var root=null; //二叉樹數據結構的值存儲到這裏
var insertNode=function(node,newNode){
if(newNode.key<node.key){
if(node.left===null){
node.left=newNode;
}else{
insertNode(node.left,newNode);
}
}else{
if(node.right===null){
node.right=newNode;
}else{
insertNode(node.right,newNode);
}
}
console.log(root); //這裏的就是二叉樹數據結構的存儲值
};
this.insert=function(key){
var newNode=new Node(key);
if(root===null){
root=newNode;
}else{
insertNode(root,newNode);
}
};
//中序遍歷實現代碼
var inOrderTraversNode=function(node,callback){
if(node!==null){
inOrderTraversNode(node.left,callback);
callback(node.key);
inOrderTraversNode(node.right,callback);
}
}
this.inOrderTravers=function(callback){
inOrderTraversNode(root,callback);
}
}
//構建一個二叉樹數據結構
var nodes=[8,3,10,1,6,14,4,7,13];
var binaryTree=new BinaryTree();
nodes.forEach(function(key){
binaryTree.insert(key);
});
2.中序遍歷實現數據排序,調用方法
var callback=function(key){
console.log(key);
};
binaryTree.inOrderTravers(callback);
3.前序遍歷實現二叉樹的複製
4.後序遍歷實現操作系統的文件的檢索
5.中序遍歷,前序遍歷,後序遍歷三者之間的區別和關係
中前後:主要是按照訪問當前節點的順序來進行命名的
中序遍歷:先訪問左子樹,再訪問當前節點,再訪問右子樹,主要用於實現排序
前序遍歷:先訪問當前節點,再訪問左子樹,再訪問右子樹,主要用於二叉樹的複製
後續遍歷:先訪問左子樹,再訪問右子樹,再訪問當前節點,主要用於操作系統對於文件的搜索的遍歷