首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在二叉树中找到从只包含1的根开始的最深路径?

如何在二叉树中找到从只包含1的根开始的最深路径?
EN

Stack Overflow用户
提问于 2011-05-24 20:52:45
回答 1查看 738关注 0票数 5

我们有一个只由0和1组成的二叉树(不是BST)。我们需要找到最深的1,其中从root开始的路径仅由1组成

资料来源:亚马逊访谈问答

EN

回答 1

Stack Overflow用户

发布于 2011-05-24 21:01:36

代码语言:javascript
复制
public static int findMaxOnesDepth(Node root){

        if(root != null && root.getValue() == 1){
                 return Math.max(1 + findMaxOnesDepth(root.getLeft()), 
                          1 + findMaxOnesDepth(root.getRight());
        }
        else {
            return 0;
        }
}

如果你所在的节点是' 0 ',那么‘1’的深度就是0。否则,如果你所在的节点是'1',那么在你的左、右子节点的最大‘1’深度上加1--并返回其中的最大值。

上面的代码查找长度,要查找路径上的实际节点,您可以使用一个列表来跟踪它

代码语言:javascript
复制
public static ArrayList<Node> findLongestOnesPath(Node root){

       ArrayList<Node> currStack = new ArrayList<Node>();

      if( root != null && root.getValue() == 1){

          currStack.add(root);

          ArrayList<Node> leftStack = findLongestOnesPath(root.getLeft());
          ArrayList<Node> rightStack = findLongestOnesPath(root.getRight());

          if(leftStack.size() > rightStack.size()){
                currStack.addAll(leftStack);
          }
          else{
              currStack.addAll(rightStack);
          }

      }

      return currStack;
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6110721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档