您的位置:首页 > 其它

求根节点到树中任一结点的路径

2014-03-14 10:14 218 查看
求根节点到树中任一结点的路径很有用,比如要求两个节点最近公共父节点的时候,就可以先分别生成父节点到子节点的路径。

然后就换成寻找两个链表中最后一个相同元素的问题。

思路很简单,递归寻找,把中间经过的节点放入ArrayList中,但有个地方需要用到回溯,否则返回值会不好判断。

写出来代码会比较臃长。

最佳实现:

public static boolean getPathFromRoot(TreeNode root, TreeNode node, ArrayList<Integer> pathArray) {
        if(root==null||node==null) {
            return false;
        }
        pathArray.add(root.val);
        
        if(root.val==node.val) {
            return true;
        }
        if(root.left!=null) {
            if(getPathFromRoot(root.left,node,pathArray)==true) {
                return true;
            }
        }
        if(root.right!=null) {
            if(getPathFromRoot(root.right,node,pathArray)==true) {
                return true;
            }
        }
        //回溯
        pathArray.remove(pathArray.size() - 1);
        return false;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐