二叉排序樹_求二叉樹的高度
其實,二叉樹的高度就是它的左子樹和右子樹中高度最大值 + 1
另外考慮: 當待排序的資料本來就是有序的情況,會發生什麼?
請參考《資料結構》教材解決這個問題。
class BiTree { private int data; private BiTree left; private BiTree right; public BiTree(int x) { data = x; } //小的數放左邊,大的數放右邊 public void add(BiTree t) { if (t.data < this.data) { if (left == null) { left = t; } else { left.add(t); } } else { if (right == null) { right = t; } else { right.add(t); } } } //中序遍歷,先左子樹,再自身,再右子樹 //遞迴思想 public void travel() { if (left != null) { left.travel(); } System.out.print(data+" "); if (right != null) { right.travel(); } } //求高度 //遞迴思想 public int height(){ int treeHeight = 0; int leftHeight,rightHeight; if(this == null){ return 0; }else{ leftHeight = (left == null? 0:left.height()); rightHeight = (right == null? 0:right.height()); treeHeight = Math.max(leftHeight, rightHeight); return 1+treeHeight; } } } public class My1 { public static void main(String[] args) { BiTree t = new BiTree(12); t.add(new BiTree(9)); t.add(new BiTree(5)); t.add(new BiTree(8)); t.add(new BiTree(15)); t.add(new BiTree(20)); t.add(new BiTree(11)); t.travel();//遍歷 System.out.println(); System.out.println("樹的高度是:"+t.height()); } }
Conclusion
5 8 9 11 12 15 20
樹的高度是:4
當排序資料自身就是有序的時,這個佇列元素的個數即二叉樹的高度
相關推薦
二叉排序樹_求二叉樹的高度
如果定義一顆二叉樹的高度就是從根到葉子的最長距離。試編碼求二叉樹的高度。 其實,二叉樹的高度就是它的左子樹和右子樹中高度最大值 + 1 另外考慮: 當待排序的資料本來就是有序的情況,會發生什麼?請參考《資料結構》教材解決這個問題。 class BiTree { pri
資料結構_求二叉樹中度為0,為1,為2的節點的個數以及所有節點個數
int NumberOfZeroDegree(BTNode *T)//求二叉樹中度為0的節點個數 { int i=0; if(NULL != T) { if(NULL==T->lchild && NULL==T->rchild)
樹:求二叉樹的高度和葉子結點數量
演算法程式碼很簡單都是用使用遞迴計算,大家把遞迴思想領悟到就ok了。 二叉樹高度演算法 //求二叉樹的高度 採用遞迴的方式 void GetHeight(BiTree tree, int* heigh
BZOJ_3589_動態樹_容斥原理+樹鏈剖分
query using mod mask tin 容斥原理 urn con pos BZOJ_3589_動態樹_容斥原理+樹鏈剖分 題意: 維護一棵樹,支持1.子樹內點權加上一個數 2.給出k條鏈,求路徑上的點權和(重復的計算一次) (k<=5) 分析:
BZOJ_3685_普通van Emde Boas樹_權值線段樹
true fread sam desc include 代碼 ID 權值線段樹 class BZOJ_3685_普通van Emde Boas樹_權值線段樹 Description 設計數據結構支持: 1 x 若x不存在,插入x 2 x 若x存在,刪除x
資料結構_樹_赫夫曼樹及赫夫曼編碼_C++實現
#include<iostream> #include<stack> using namespace std; class NODE { public: NODE(); int weight,parent,lchild,rchild; }; NODE::NODE() { we
【樹剖求LCA】樹剖知識點
不太優美但是有註釋的版本: #include<cstdio> #include<iostream> using namespace std; struct edge{ int to,ne; }e[1000005]; int n,m,s,ecnt,head[500005]
程式設計基礎79 給定二叉排序樹結構和陣列求整棵樹
1099 Build A Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: T
二叉樹程式設計實戰_求葉子節點數目
統計二叉樹中葉子結點的個數: 葉子節點:沒有孩子節點的樹 demo.cpp #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #includ
二叉樹基礎操作 ,前中後序遍歷,求二叉樹高度,二叉搜尋樹(二叉排序樹)Java實現 程式碼集合
首先,定義一個樹類Tree.java public class Tree { public TreeNode root; } 定義樹節點類TreeNode.java public class TreeNode { public TreeNode(int
求結點數位n的 二叉排序樹個數
利用動態規劃的思想 設S(n)為情況數 S(0) = S(1) = 1 S(2) = 2 S(3) = S(0)*S(2) + S(1)*S(1) + S(2)*S(0) S(4) = S(0)*S(3) + S(1)*S(2) + S(2)*S(1) + S(3)*
建立二叉排序樹_三種順序遍歷
str 空格 -- 一行 amp oot std new clu 題目描述 輸入一系列整數,建立二叉排序樹,並進行前序,中序,後序遍歷。 輸入描述: 輸入第一行包括一個整數n(1<=n<=100)。 接下來的一行包括n個整數。 輸出描述: 可能有多組測試數據,對
二叉排序樹
sans insert -a put 定義 n) include 先序 min Time Limit: 1000MS Memory limit: 65536K 題目描寫敘述 二叉排序樹的定義是:或者是一棵空樹。或者是具有下列性質的二叉樹: 若它的左子樹不空,
二叉排序樹的插入與刪除
else post 相等 大於 truct art parent node -m 二叉排序樹的插入與刪除可能會破壞二叉排序樹的性質,如今要求插入和刪除操作保持其性質 二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上全部結點的
二叉樹(11)----求二叉樹的鏡像,遞歸和非遞歸方式
temp right 二叉樹 -a data nbsp rac art urn 1、二叉樹定義: typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; type
數據結構與算法問題 二叉排序樹
geo post adding ng- spa main 排序樹 ack word 題目描寫敘述: 二叉排序樹,也稱為二叉查找樹。能夠是一顆空樹。也能夠是一顆具有例如以下特性的非空二叉樹: 1. 若左子樹非空,則左
二叉排序樹 C++
二叉查找樹 {} 刪除元素 one dem trees system arc oid 二叉排序樹(Binary Sort Tree),又稱二叉查找樹。 1、若左子樹不為空,則左子樹上所有結點的值均小於他的根結構的值; 2、若右子樹不為空,則右子樹上所有結點的值均大於他的根結
求二叉樹中任意兩個結點的距離
case itl wid get ren return roo [] fall 求二叉樹中任意兩個結點的距離實現步驟:計算跟到第一個結點的距離;計算跟到第二個結點的距離;計算lca;計算跟到lca結點的距離;結果為(1) + (2) - 2 * (4),因為重復計算了兩次的
C語言——二叉排序樹
pre span ren 二叉 == nbsp stdio.h spa int 二叉排序樹是一種實現動態查找的樹表,又稱二叉查找樹。 二叉排序樹的性質: 1. 若它的左子樹不為空,則左子樹上所有節點的鍵值均小於它的根節點鍵值 2. 若它的右子樹不為空,則右子樹上所有節
二叉排序樹和平衡二叉樹的關系
fill 樹的高度 == eight font 關系 avl樹 avi 等於 二叉排序樹: 二叉排序樹又稱二叉查找樹,亦稱二叉搜索樹。 二叉排序樹或者是一顆空樹,或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上所有結點的值均小於它的根節點的值; (2)若右子