二叉树的深度优先搜索之代码实现
代码演示:
function Node(value) {
this.value = value;
this.left = null;
this.right = null;
}
var a = new Node("a");
var b = new Node("b");
var c = new Node("c");
var d = new Node("d");
var e = new Node("e");
var f = new Node("f");
var g = new Node("g");
a.left = c;
a.right = b;
c.left = f;
c.right = g;
b.left = d;
b.right = e;
function deepSearch(root, target) {
if (root === null) return false; // 连树都没有,直接return false
if (root.value === target) return true; // 如果有,根节点的值想等返回true
var left = deepSearch(root.left, target);
var right = deepSearch(root.right, target);
return left || right; //有一个存在的就存在
}
console.log(deepSearch(a, "f")); // true 说明 f 在里面
console.log(deepSearch(a, "g")); // true 说明 g 在里面
console.log(deepSearch(a, "z")); // false 说明 z 在里面
deepSearch用到了前序遍历的算法;
运行结果:
下一篇:
前端必学算法——二叉树的广度优先搜索之代码实现