判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
生活随笔
收集整理的這篇文章主要介紹了
判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
平衡二叉樹的解法:主要是求出二叉樹的高度,若根節點的左子樹的高度與右子樹的高度差小于等于1,則表示該二叉樹為平衡二叉樹
public static class Node{public int value;public Node left;public Node right;public Node(int data){this.value = data;} } public static boolean isBalance(Node head){return getHeight(head, 0) ! = -1; }public static int getHeight(Node head, int level){if(head == null){return level;}int lh = getHeight(head.left, level + 1);int rh = getHeight(head.right, level + 1);if(lh == -1 || rh == -1 || Math.abs(lh - rh) > 1){return -1;} } 完全二叉樹的解法:若最左的一個節點只有一個左子節點,則其余的同高度的節點都應該是葉節點public static boolean isComplete(Node head){if(head == null){return true;}Queue<Node> queue = new LinkedList<Node>();boolean leaf = false;Node cur = null;Node l = null;Node r = null;queue.offer(head);while(!queue.isEmpty){cur = queue.poll();l = cur.left;r = cur.right;if((leaf && (l != null || r != null)) || (l == null && r != null)){return false;}if(l != null){queue.offer(l);}if(r != null){queue.offer(r);}else{leaf = true;}} }搜索二叉樹的解法:只需要中序遍歷整棵二叉樹,判斷得到的節點序列是否為依次遞增即可。
總結
以上是生活随笔為你收集整理的判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找到二叉树中符合搜索二叉树条件的最大拓扑
- 下一篇: 调整搜索二叉树中两个错误的节点