2014-10-25 6 views
0

이 방법으로 저를 도와 줄 수 있습니까? 내가 전에 복귀와 함께했지만, 그것은 작동 didnt는 하나모두 트리의 리프 노드를 결정합니다.

private String leafNodes(TreeNode root, String leafs){ 
    if (root.isLeaf()) { 
     leafs += Integer.toString(root.getData()); 
    } 
    else { 
     if(root.getLeft() != null) { 
      leafs += leafNodes(root.getLeft(), leafs); 
     } 
     if (root.getRight() != null) { 
      leafs += leafNodes(root.getRight(), leafs); 
     } 
     return leafs; 
    } 
    return leafs; 
} 
+0

어떤 언어가이 btw입니까? – sp2danny

답변

1

문제는 당신이 같은 잎이 돌려 여러 번 나타날 수 있도록 현재의 문자열로 결과를 추가 한 후 아이들에게 leafs 통과하고 있다는 것입니다 끈. 다음과 같이 수정할 수 있습니다.

private String leafNodes(TreeNode root){ 
    String leaves = ""; 
    if (root.isLeaf()) { 
     leaves = Integer.toString(root.getData()); 
    } 
    else { 
     if(root.getLeft() != null) { 
      leaves += leafNodes(root.getLeft()); 
     } 
     if (root.getRight() != null) { 
      leaves += leafNodes(root.getRight()); 
     } 
    } 
    return leaves; 
} 
+0

@ sp2danny 항상 ""인 것은 아닙니다. 'root.getLeft()! = null'과'root.getRight()! = null'이라면 첫 번째 할당'leaves + = leafNodes (root.getLeft())'는 왼쪽 하위 트리의 잎과 동일하게 만듭니다 , 그리고 나서'leaves + = leafNodes (root.getRight())'는 그것을 오른쪽 서브 트리의 잎과 연결한다. – kraskevich

+0

brainfarted, 지금 upvoted. – sp2danny

관련 문제