깊이와 폭 탐색 이진 트리 탐색

https://blog.csdn.net/weixin_39912556/article/details/82852749

 

방법을 포장; 

수입 java.util.ArrayDeque; 
수입 java.util.Deque; 
수입 java.util.Queue; 
수입 java.util.Stack의; 

/ ** 
 * 2019년 9월 11일에 조이스에 의해 만들어진. 
 * / 
공용 클래스 TreeMain { 
    개인 정적 클래스의 TreeNode { 
        공공 TreeNode를 왼쪽으로 
        공공의 TreeNode 오른쪽; 
        개인 문자열 발; 
        공공의 TreeNode (문자열 _val) { 
            발 = _val; 
        } 
        공공 무효 에코 () { 
            에서 System.out.println (발); 
        } 

        공공의 TreeNode setLeft (TreeNode를 왼쪽) { 
            this.left = 왼쪽; 
            이를 반환;
        }
 
        공공의 TreeNode setRight (TreeNode를 오른쪽) { 
            this.right = 오른쪽; 
            이를 반환; 
        } 
    } 

    공공 정적 무효 메인 (문자열 [] F) { 
        TreeNode를 D = TreeNode를 새로운 ( "D")를; 
        TreeNode를 E = 새 TreeNode를 ( "E"); 
        TreeNode를 F = 새 TreeNode를 ( "F"); 
        TreeNode를 G = TreeNode를 새로운 ( "G"); 
        TreeNode를 B = TreeNode를 새로운 ( "B") setLeft (D) .setRight (E).; 
        TreeNode를 C = TreeNode를 새로운 ( "C") setLeft (F) .setRight (G).; 
        A = TreeNode를 새로운 TreeNode를 ( "A") setLeft (B) .setRight (C).; 
        DB (A); 
        DBD (A); 
        WB (A);


     * @param 루트 
     * / 
    공공 정적 무효 DB (TreeNode를 루트) { 
        스택 <TreeNode를> 스택 = 새로운 스택 <> (); 
        stack.push (루트); 
        반면 {(stack.isEmpty ()!) 
            의 TreeNode TREENODE stack.pop = (); 
            treeNode.echo (); 
            경우 (treeNode.right = 널!) { 
                stack.push (treeNode.right); 
            } 
            경우 (treeNode.left = NULL!) { 
                stack.push (treeNode.left); 
            } 
        } 
    } 

    / ** 
     *深度递归
     파라미터 : 루트 
     * / 
    공공 정적 무효 DBD (TreeNode를 루트) { 
        경우 (루트 == NULL) 
            반환; 
        root.echo ();
        DBD (root.left); 
        DBD (root.right); 
    } 

    / ** 
     *广度
     * @param 루트 
     * / 
    공공 정적 무효 WB (TreeNode를 루트) { 
        Deque와 <TreeNode를> = 새로운 양단의 ArrayDeque <> (); 
        deque.add (루트); 
        반면 {(deque.isEmpty ()!) 
            의 TreeNode TREENODE deque.remove = (); 
            treeNode.echo (); 
            경우 (treeNode.left = 널!) { 
                deque.add (treeNode.left); 
            } 
            경우 (treeNode.right! = NULL) { 
                deque.add (treeNode.right);
            } 
        } 
    } 
}

 

추천

출처www.cnblogs.com/silyvin/p/11505527.html