二叉樹介面定義

2021-09-26 01:14:30 字數 2858 閱讀 3245

package com.swust.二叉樹;

/** * 滿二叉樹:所有節點(非葉子節點),左右子樹均非空

* * 完全二叉樹:非滿的節點,必然在整棵樹的右下角

* * 二分搜尋樹的每個節點的值: 大於其左子樹的所有節點的值 小於其右子樹的所有節點的值

*/public inte***ce bstinte***ce>

// }

// // private node root;

// private int size;

int size();

boolean isempty();

/*********************************** 包含開始 ***************************************/

// 看二分搜尋樹中是否包含元素e

boolean contains(e e);

// 看以node為根的二分搜尋樹中是否包含元素e, 遞迴演算法

// private boolean contains(node node, e e)

/*********************************** 包含結束 ***************************************/

/*********************************** 增開始 ***************************************/

// 向二分搜尋樹中新增新的元素e

void add(e e);

// 向以node為根的二分搜尋樹中插入元素e,遞迴演算法

// 返回插入新節點後二分搜尋樹的根

// private node add(node node, e e)

/*********************************** 增結束 ***************************************/

/*********************************** 遍歷開始 ***************************************/

// 二分搜尋樹的前序遍歷

void preorder();

// private void preorder(node node)

// 二分搜尋樹的前序遍歷【非遞迴。入隊順序:先右子樹,再左子樹】

void preordernr();

// 二分搜尋樹的中序遍歷

void inorder();

// 二分搜尋樹的後序遍歷

void postorder();

// 二分搜尋樹的層序遍歷[入隊順序:先左子樹,再右子樹]

void levelorder();

/*********************************** 遍歷結束 ***************************************/

/*********************************** 查開始 ***************************************/

// 尋找二分搜尋樹的最小元素

/*** 1 遞迴找到最左側的節點

*/e minimum();

// 返回以node為根的二分搜尋樹的最小值所在的節點

// private node minimum(node node);

// 尋找二分搜尋樹的最大元素

/*** 1 遞迴找到最右側的節點

*/e maximum();

// 返回以node為根的二分搜尋樹的最大值所在的節點

// private node maximum(node node);

/*********************************** 查開始 ***************************************/

/*********************************** 刪開始 ***************************************/

// 從二分搜尋樹中刪除最小值所在節點, 返回最小值

e removemin();

// 刪除掉以node為根的二分搜尋樹中的最小節點

// 返回刪除節點後新的二分搜尋樹的根

/*** 1 遞迴找到最小的節點 2 父節點的左孩子=待刪除節點的右孩子

*/// private node removemin(node node)

// 從二分搜尋樹中刪除最大值所在節點

e removemax();

/*** 1 遞迴找到最大的節點 2 父節點的右孩子=待刪除節點的左孩子

*/// private node removemax(node node)

/*** 從二分搜尋樹中刪除元素為e的節點 1 遞迴查詢到待刪除的節點 2 待刪除節點三種狀態: 2.1 左子樹空 2.2 右子樹空 2.3 左右子樹非空

* 2.3.1 找到待刪除節點cur右子樹最小的節點,命名為successor 2.3.2

* successor右子樹為(cur右子樹,這個右子樹已經刪除最小節點) 2.3.3 successor左子樹為(cur左子樹)

* * @param e

*/void remove(e e);

// 刪除掉以node為根的二分搜尋樹中值為e的節點, 遞迴演算法

// 返回刪除節點後新的二分搜尋樹的根

// private node remove(node node, e e)

/*********************************** 刪結束 ***************************************/

}

二叉樹常用介面

二叉樹問題用遞迴來解決時 是從葉子結點 往根的方向 從下往上來實現的 關係 總結點個數 根 左子樹結點個數 右子樹結點 個數 終止條件 root null int size node root 關係 總葉子結點 左子樹葉子結點個數 右子樹葉子結點個數 終止條件 root null 和 root le...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹與二叉樹定義

樹是n n 0 個節點的有限集合t。當n 0時,稱為空樹 當n 0時,該集合滿足如下條件 1.其中必有乙個稱為根 root 的特定節點,它沒有直接前驅,但又0個或多個直接後繼 2.其餘節點可分為m m 0 個互不相交的有限集t1 t2 tm,其中每乙個集合本身又是一棵樹,並且稱為根的子樹 suntr...