functionNode(value){this.value = value;this.left =null;this.right =null;}var a =newNode("a");var b =newNode("b");var c =newNode("c");var d =newNode("d");var e =newNode("e");var f =newNode("f");var g =newNode("g");
a.left = c;
a.right = b;
c.left = f;
c.right = g;
b.left = d;
b.right = e;// 对于二叉树来说,深度优先搜索,和前序遍历的顺序是一样的。functiondeepSearch(root, target){if(root ==null)returnfalse;if(root.value == target)returntrue;var left =deepSearch(root.left,target);var right =deepSearch(root.right,target);return left || right;}
console.log(deepSearch(a,"f"));
广搜
functionNode(value){this.value = value;this.left =null;this.right =null;}var a =newNode("a");var b =newNode("b");var c =newNode("c");var d =newNode("d");var e =newNode("e");var f =newNode("f");var g =newNode("g");
a.left = c;
a.right = b;
c.left = f;
c.right = g;
b.left = d;
b.right = e;functionf1(rootList, target){if(rootList ==null|| rootList.length ==0)returnfalse;var childList =[];// 当前所有节点的子节点,都在这个list中,这样传入下一层级的时候,就可以遍历整个层级的节点。for(var i =0; i < rootList.length; i++){if(rootList[i]!=null&& rootList[i].value == target){returntrue;}else{
childList.push(rootList[i].left);// 打印当前节点的左子树
childList.push(rootList[i].right);// 打印当前节点的右子树}}// console.log(childList) // 打印这个节点集合returnf1(childList, target);}
console.log(f1([a],'e'))