菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
3227
0

参数为二叉树和一个整数,求所有和为该整数的路径

原创
05/13 14:22
阅读数 1715

javascript 虽然与PHP不同,写起简单的算法来也是简单有趣
题目,参数为二叉树和一个整数,求所有和为该整数的路径

典型的回溯法运用

function Node(value)
{
    this.value = value;
    this.left = this.right = null;
}

function find_path(root, value, path, paths)
{
    if(!root) return;
    path.push(root.value);
    if(root.value == value){
        console.log(path);
        paths.push([...path]);
    }

    find_path(root.left, value - root.value, path, paths);
    find_path(root.right, value - root.value, path, paths);
    path.pop(root.value);

    return paths;
}

function print_tree(root)
{
    let a = tree2array(root);
    console.log(a);
}

function tree2array(root, s = [])
{
    if(!root) return;
    tree2array(root.left, s);
    s.push(root.value);
    tree2array(root.right, s);
    return s;
}

let root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.right.right = new Node(-1);

left = root.left;
left.left = new Node(4);
left.right = new Node(-1);
left.right.left = new Node(1);

// print_tree(root);

let paths = find_path(root, 3, [], []);
console.log(paths);

发表评论

0/200
3227 点赞
0 评论
收藏
为你推荐 换一批