天天看點

資料結構與算法:二叉樹的中序周遊

描述

給定一個二叉樹的根節點root,傳回它的中序周遊結果。

import java.util.ArrayList;
import java.util.List;

public class InorderTraversalTree {

    static class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
            this.val = val;
        }
    }


    /**
     * 代碼中的類名、方法名、參數名已經指定,請勿修改,直接傳回方法規定的值即可
     *
     *
     * @param root TreeNode類
     * @return int整型一維數組
     */
    public int[] inorderTraversal (TreeNode root) {
        if(null == root){
            return new int[]{};
        }

        List<Integer> listNode = new ArrayList<>();
        inorderTraversalImpl(root,listNode);

        int[] arr = new int[listNode.size()];
        for (int i = 0; i <listNode.size(); i++) {
            arr[i] = listNode.get(i);
        }
        return arr;
    }

    public void inorderTraversalImpl(TreeNode root, List<Integer> listNode){
        TreeNode left = root.left;
        TreeNode right = root.right;


        if(null != left){
            inorderTraversalImpl(left,listNode);
        }

        listNode.add(root.val);

        if(null != right){
            inorderTraversalImpl(right,listNode);
        }
    }
}