二叉查詢樹(特殊型別的二叉樹)

2021-10-01 02:28:43 字數 1894 閱讀 9686

二叉樹是一棵樹,其中每個節點都不能有多於兩個的兒子。如下圖顯示一顆由乙個根和兩顆子樹組成的二叉樹,左子樹和右子樹均可能為空。

因為乙個二叉樹節點最多有兩個子節點,所以我們可以儲存直接鏈結到它們的鏈。樹節點的宣告在結構上類似於雙鏈表的宣告,在宣告中,節點就是由element(元素)的資訊加上兩個到其他節點的引用(left和right)組成的結構。具體實現的**如下:

private

class

node

二叉樹的遍歷是乙個很常見的問題。二叉樹的遍歷方式主要有:先序遍歷、中序遍歷、後序遍歷、層次遍歷。下面我們主要研究下先序、中序、後序遍歷,這三種遍歷方式其實指的是父節點被訪問的次序。

public

void

preorder()

if(this

.right!=null)

}

public

void

inorder()

system.out.

print

(this

.data+

"->");

if(this

.right!=null)

}

public

void

postorder()

if(this

.right!=null)

system.out.

print

(this

.data+

"->");

}

package 資料結構;

public

class

binarytree

//增加新節點

public

void

addnode

(int data)

else

}else

else}}

}//先序遍歷

public

void

preorder()

if(this

.right!=null)

}//中序遍歷

public

void

inorder()

system.out.

print

(this

.data+

"->");

if(this

.right!=null)

}//後序遍歷

public

void

postorder()

if(this

.right!=null)

system.out.

print

(this

.data+

"->");

}//二叉查詢樹最小值的遞迴實現

private node findmin

(node t)

else

if(t.left==null)

return

findmin

(t.left);}

//二叉查詢樹最大值的非遞迴實現

private node findmax

(node t)

}return t;}}

//判斷是否增加新節點

public

void

add(

int data)

else

}public

void

print()

}

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...

二叉樹 二叉查詢樹

二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...

樹(樹,二叉樹,二叉查詢樹)

1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...