JS实现二叉查找树的建立以及一些遍历方法实现

  

二叉查找树是由节点和边组成的。
  

  

我们可以定义一个节点类节点,里面存放节点的数据,及左右子节点,再定义一个用来显示数据的方法:

     //以下定义一个节点类   函数节点(数据、左、右){//节点的键值   这一点。数据=https://www.yisu.com/zixun/data;//左节点   这一点。左=左;//右节点   这一点。右=左;//显示该节点的键值   这一点。显示=显示;   }//实现显示方法   函数显示(){   返回this.data;   }      

再定义一个二叉查找树类BST,该类中有定义树的根节点,初始化为null,然后定义插入节点的方法,还有一边遍历的方法:

     //二叉查找树BST//有一个节点属性,还有一些其他的方法,以下定义一个二叉查找树BST类   函数BST () {//根节点初始化为空   这一点。根=零;//方法//插入   这一点。插入=插入;//中序遍历   这一点。只求=有条不紊地进行;//先序遍历   这一点。预订=预订;//后序遍历   这一点。后根次序=后缀次序;   }//实现插入插入方法   函数插入(数据){//创建一个节点保存数据   var节点=新节点(数据,零,零);//下面将节点节点插入到树中//如果树是空的,就将节点设为根节点   如果(! this.root) {   这一点。根=节点;   其他}{//树不为空//判断插在父节点的左边还是右边//所以先要保存一下父节点/父母/var=this.root;   var电流=this.root;   var父母;//如果要插入的节点键值小于父节点键值,则插在父节点左边,//前提是父节点的左边为空,否则要将父节点往下移一层,//然后再做判断   而(真){//数据小于父节点的键值   父母=当前;   如果数据& lt;parent.data) {//将父节点往左下移(插入左边)//父=parent.left;   当前=current.left;//如果节点为空,则直接插入   如果当前(!){//! ! !此处特别注意,如果就这样把父母赋值为节点,也仅仅只是指母公司向节点,//而并没有加到父元素的左边! ! !根本没有加到树中去,所以要先记住父元素,再把当前元素加入进的去   的父母。左=节点;   打破;   }   其他}{//将父节点往右下移(插入右边)   当前=current.right;   如果当前(!){   的父母。正确的=节点;   打破;   }   }   }      }   }//实现有条不紊地进行遍历方法(左中右)   函数中根次序(节点){   如果(节点){   有条不紊地进行(node.left);   console.log (node.show ());   有条不紊地进行(node.right);   }   }//先序遍历(中左右)   函数预订(节点){   如果(节点){   console.log (node.show ());   预订(node.left);   预订(node.right);   }   }//后序遍历(左右中)   函数后根次序(节点){   如果(节点){   预订(node.left);   预订(node.right);   console.log (node.show ());   }   }      之前      

测试:      //后序遍历(左右中)   函数后根次序(节点){   如果(节点){   后根次序(node.left);   后根次序(node.right);   console.log (node.show ());   }   }//实例化一个BST树   树var=new BST ();//添加节点   tree.insert (30);   tree.insert (14);   tree.insert (35);   tree.insert (12);   tree.insert (17);//中序遍历   tree.inorder (tree.root);//先序遍历   tree.preorder (tree.root);//后序遍历   tree.postorder (tree.root);      之前      

,结果:

  

中序遍历:
  

  

 JS实现二叉查找树的建立以及一些遍历方法实现

  

先序遍历:
  

  

 JS实现二叉查找树的建立以及一些遍历方法实现

  

后序遍历:
  

  

 JS实现二叉查找树的建立以及一些遍历方法实现“> <br/>
  </p>
  <p>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p><h2 class=JS实现二叉查找树的建立以及一些遍历方法实现