生成一棵普通樹

前言:
用數組生成一棵普通樹,看到網上生成二叉樹一般用遞歸資料較多,普通樹沒那個必要把,關於普通樹的生成的資料比較匱乏,而且代碼量普遍較大,很多沒必要的代碼,十分不簡潔明瞭,本來以爲java 自己有接口的,自己寫了一個精簡版的。

代碼

package com.general;
import java.util.ArrayList;
import java.util.List;
/**
 * @program: Work
 * @description: 根據數組生成一棵普通樹
 * @author: LiuYing
 * @create: 2019-03-19 11:05
 **/
class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
public class GenerateTree {
    List<TreeNode> list = new ArrayList<>();
    TreeNode root;
    public GenerateTree(int[] arr) {

        for (int i = 0; i < arr.length; i++) {
            TreeNode node = new TreeNode(arr[i]);
            list.add(node);

        }

        for (int i = 0; i < list.size() / 2; i++) {
            if (2 * (i + 1) - 1 < list.size()) { //這個判斷似乎是必須的
                list.get(i).left = list.get(2 * (i + 1) - 1);
            }

            if (2 * (i + 1) < list.size()) {
                list.get(i).right = list.get(2 * (i + 1));
            }

        }
        root = list.get(0);

    }
    public static void main(String args[]) {
        int a[] = {1, 2, 3, 4, 5, 6};
        GenerateTree tree = new GenerateTree(a);
    }
}

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