二叉樹數據結構及中,前,後序遍歷實現

綜述:基於二叉樹數據結構實現排序,,在百度搜索排序的時候,如果使用冒泡排序,會存在很大的性能問題,如果使用二叉樹排序,性能將有大的提高。

課程鏈接:https://www.imooc.com/video/15744

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.中序遍歷,前序遍歷,後序遍歷三者之間的區別和關係

中前後:主要是按照訪問當前節點的順序來進行命名的

中序遍歷:先訪問左子樹,再訪問當前節點,再訪問右子樹,主要用於實現排序

前序遍歷:先訪問當前節點,再訪問左子樹,再訪問右子樹,主要用於二叉樹的複製

後續遍歷:先訪問左子樹,再訪問右子樹,再訪問當前節點,主要用於操作系統對於文件的搜索的遍歷

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章