平衡二叉樹判斷

原文鏈接
java判斷一顆二叉樹是否爲平衡二叉樹

import java.util.*;

class TreeNode {
    int val;
    TreeNode left = null;
    TreeNode right = null;

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

}

public class Test {

    /**
     *          1
     *       2     3
     *    4   #  5   6
     *  7  8    # # # #
     * 9
     */

    private char[] treeValue = {'1', '2', '3', '4', '#', '5', '6', '7', '8', '#', '#', '#', '#', '9'};

    private int height(TreeNode node) {
        if(node == null) {
            return 0;
        } else {
            return Math.max(height(node.left), height(node.right)) + 1;
        }
    }

    public boolean isBalanceTree(TreeNode node) {
        if(node == null) {
            return true;
        }
        return Math.abs(height(node.left) - height(node.right)) <= 1;
    }

    public TreeNode buildTree() {
        LinkedList<TreeNode> queue = new LinkedList<>();
        TreeNode head = new TreeNode(treeValue[0] - '0');
        queue.offer(head);
        for(int i = 1; i < treeValue.length; i = i + 2) {
            TreeNode node = queue.poll();
            if(node == null) {
                continue;
            }
            if(treeValue[i] != '#') {
                node.left = new TreeNode(treeValue[i] - '0');
                queue.offer(node.left);
            }
            if(i + 1 < treeValue.length && treeValue[i + 1] != '#') {
                node.right = new TreeNode(treeValue[i + 1] - '0');
                queue.offer(node.right);
            }
        }
        return head;
    }

    public static void main(String[] args) {
        Test test = new Test();
        TreeNode head = test.buildTree();
        System.out.println(test.isBalanceTree(head));

    }
}
發佈了71 篇原創文章 · 獲贊 37 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章