<script> // 构建一个二叉树 function BinaryTree() { //创建一个节点 var Node = function(key){ this.key = key;//节点值 this.left=null;//节点的左儿子 this.right=null;//节点的右儿子 }; var root = null;//根节点 var insertNode = function(oldNode,newNode){//插入节点函数 if(newNode.key<oldNode.key){//放入左节点 if(oldNode.left===null){ oldNode.left=newNode; }else{ insertNode(oldNode.left,newNode);//递归 } }else{ insertNode(oldNode.right,newNode); } } this.insert=function(key){//定义了一个自定义函数insert() var newNode=new Node(key);//newNode是Node的一个实例 if(root===null){ root=newNode; }else{ insertNode(root,newNode); } }; } var nodes=[8,3,10,1,6,14,4,7,13]; var binaryTree=new BinaryTree();//binaryTree是BinaryTree的实例 nodes.forEach(function(key){ binaryTree.insert(key); });
第18行的else插入右节点,没有空判断
if(oldNode.right===null){ oldNode.right = newNode; } else { insertNode(oldNode.right, newNode); }