二叉查詢樹

2021-08-19 11:16:30 字數 2102 閱讀 2411

package 樹;

/*** 定義乙個結點

*/class node

}public class binarysearchtree

node temp = root;

while(true)else

}else}}

/*** 刪除元素

* 思路:

*         如果節點是葉子結點,可以直接刪除。

*         如果節點有乙個子節點,則將父節點直接指向其子節點。

*         如果節點有兩個子節點(最為複雜),用其右子樹中的最小的資料代替該節點的資料並遞迴地刪除那個節點。

*//**

* 判斷是否包含某元素

*/public boolean iscontains(integer data)

node temp = root;

while(true)else

}else}}

/*** 求二叉搜尋樹的高度

*/public int getheight()

private int getheight(node node)

int i = getheight(node.left);

int j = getheight(node.right);

return (i>j)?i+1:j+1;

}/**

* 求二叉搜尋樹的節點個數

*/public int getsize()

private int getsize(node node)

return 1+getsize(node.left)+getsize(node.right);

}/**

* 求二叉搜尋樹中的最大值

*/public integer getmax()

node temp = root;

while(temp.right!=null)

return temp.data;

}/**

* 求二叉搜尋樹中的最小值

*/public integer getmin()

node temp = root;

while(temp.left!=null)

return temp.data;

}/**

* 前序遍歷方法遞迴實現

*/public void preorder()

private void preorder(node node) else

}/**

* 中序遍歷方法遞迴實現

*/public void midorder()

private void midorder(node node) else

}/**

* 後序遍歷方法遞迴實現

*/public void aftorder()

private void aftorder(node node) else

}/**

* 主函式

*/public static void main(string args) ;

for(int i:arr)

system.out.println("中序遍歷:");

bst.midorder();

system.out.println();

system.out.println("前序遍歷:");

bst.preorder();

system.out.println();

system.out.println("後序遍歷:");

bst.aftorder();

system.out.println();

system.out.println("二叉搜尋樹的高度為:"+bst.getheight());

system.out.println("二叉搜尋樹的節點個數為:"+bst.getsize());

system.out.println("二叉搜尋樹是否包含元素2?"+bst.iscontains(2));

system.out.println("二叉搜尋樹的最大節點為:"+bst.getmax());

system.out.println("二叉搜尋樹的最小節點為:"+bst.getmin());}}

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 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 ...