수준 3: 이진 트리의 사후 순회 구현, 작업 설명 이 수준의 작업: 이진 연결 목록에 저장된 이진 트리의 후위 순회 알고리즘을 구현합니다. 관련 지식 이진 트리에 대한 기본 지식은 이전 수준을 참조하십시오.

레벨 3: 이진 트리 구현의 사후 순회

200

  • 임무 요구 사항
  • 참조 답변
  • 댓글 40

미션 세부 정보

이 수준의 작업: 이진 연결 목록에 저장된 이진 트리의 사후 순회 알고리즘을 구현합니다.

관련 정보

이진 트리에 대한 기본 지식은 이전 수준을 참조하십시오.

이진 트리의 사후 순회

후위 순회는 이진 트리를 순회할 때 먼저 노드의 왼쪽 하위 트리와 오른쪽 하위 트리를 재귀적으로 인쇄하고 마지막으로 노드를 인쇄하는 것을 의미합니다. 아래 이미지의 경우:

사후 순회 결과는 다음과 같습니다 0 5 4 6 7 3.

순회 다이어그램은 다음과 같습니다.

후위 순회의 재귀 알고리즘은 다음과 같이 표현될 수 있습니다: 이진 트리가 비어 있지 않으면 (1) 왼쪽 하위 트리를 순회하고, (2) 오른쪽 하위 트리를 순회하고, (3) 루트 노드를 방문합니다.

프로그래밍 요구 사항

이 수준의 프로그래밍 작업은 오른쪽에 있는 코드 스니펫의 중간 Begin부터 중간까지 End코드를 완성하는 것입니다.구체적인 요구 사항은 다음과 같습니다.

  • 완료 postOrder(TreeNode root)방법은 사후 순회 기능을 실현하고 노드 값을 출력합니다.

자세한 내용은 후속 테스트 샘플을 참조하십시오.

테스트 지침

테스트 과정:

  • 플랫폼은 사용자가 완성한 클래스의 개체를 생성하고 BinaryTree,
  • createTree(int arr[])개체의 메서드를 호출하고 arr데이터가 포함된 이진 트리를 만들고 루트 노드를 반환합니다.
  • 객체의 메서드를 호출하고 postOrder(TreeNode root)후위 순회를 수행하고 노드 값을 출력합니다.
  • 그런 다음 프로그램의 출력에 따라 프로그램이 올바른지 판단하십시오.

이 수준에 관련된 코드 파일 BinaryTree.java의 코드 (순서대로 답을 얻을 수 있고 생성하기 쉽지 않으며 보상, 도움 및 지원은 Xinghe로 나아가는 동기입니다)

package step3;

/**
 * Created by zengpeng on 2018/2/12.
  YJH YJH YJH
 */
public class BinaryTree {
    private TreeNode root;//根节点

    public BinaryTree() {
        root = null;
    }

    public void postOrder(TreeNode root) {
        /********** Begin *********/
        if(root==null){
            return;
        }
        postOrder(root.leftChild);//予星河 YJH 
        postOrder(root.rightChild);
        System.out.println(root.item);

        /********** End *********/
    }
    /**
     * 以数组arr的数据,依次从上至下,从左至右构建一颗二叉树
     */
    public TreeNode createTree(int arr[]) {
        TreeNode tmp[] = new TreeNode[arr.length + 1];
        for (int k = 1; k <= arr.length; k++) {
            TreeNode node = new TreeNode(arr[k - 1]);
            tmp[k] = node;
            if (k == 1) {
                root = node;
            } else {
                int j = k / 2;
                if (k % 2 == 0) {
                    tmp[j].leftChild = node;
                } else {
                    tmp[j].rightChild = node;
                }
            }
        }

        return root;
    }

    public static class TreeNode {
        private TreeNode leftChild;
        private TreeNode rightChild;
        private int item;

        public TreeNode(int item) {
            this(null, null, item);
        }

        public TreeNode(TreeNode leftChild, TreeNode rightChild, int item) {
            this.leftChild = leftChild;
            this.rightChild = rightChild;
            this.item = item;
        }
    }
}

감사의 글: JAVA 데이터 구조 계몽 교사 Mr. Tao

          지원되는 친구 찾아보기(만들기가 쉽지 않음)

      Yuewang Building, Fujiang Riverside, Gardening Hill, Tianfu Courtyard Hongyun Technology

추천

출처blog.csdn.net/qq_64001869/article/details/128116450