Leetcode 數組生成二叉樹的工具

在刷leetcode 很多樹題目的時候經常遇到這種情況,

For example:
Given BST [1,null,2,2],

   1
    \
     2
    /
   2

發現測試的例子給的是一個數組 然而 需要輸入的結果是一個樹形結構每次手動的去創建比較麻煩,寫了一個數組到樹的一個小工具
由於其中有null 的情況所以用的是裝箱類,實現過程也比較簡單,就是先創建根節點然後在創建左右子樹,在創建左右子樹的時候依次的把左右子樹加入到一個隊列,如果爲空就跳過,每次從隊列中取出一個節點依次的把左右子樹加入到一個隊列 這樣一直遍歷下去直到把數組遍歷完了。下面給出代碼


import java.util.Deque;
import java.util.LinkedList;

public class GenerateTreeNode {
    public static TreeNode generateTreeNode(Integer[] nums) {
        if(nums==null||nums.length==0)
            return null;
        int len=nums.length;
        int index=0;
        TreeNode head=new TreeNode(nums[index]);
        Deque<TreeNode> nodeQueue = new LinkedList<>();
        nodeQueue.offer(head);
        TreeNode cur;
        while (index<len){
            index++;
            if (index>=len)return head;
            cur=nodeQueue.poll();
            Integer left=nums[index];
            if (left!=null){
                cur.left=new TreeNode(left);
                nodeQueue.offer(cur.left);
            }

            index++;
            if (index>=len)return head;
            Integer right=nums[index];
            if (right!=null){
                cur.right=new TreeNode(right);
                nodeQueue.offer(cur.right);
            }
        }
        return head;
    }

    public static void main(String[] args) {
        Integer[] data={1,null,2,2,32,31,3,23,1,23,123,12,3,12,31,23,2};
        TreeNode node=  GenerateTreeNode.generateTreeNode(data);
        System.out.println();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章