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

求根节点到树中任一结点的路径很有用,比如要求两个节点最近公共父节点的时候,就可以先分别生成父节点到子节点的路径。
然后就换成寻找两个链表中最后一个相同元素的问题。

思路很简单,递归寻找,把中间经过的节点放入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;
    }





阅读更多
个人分类: 面试题 算法 Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭