binarytree類
package tree;
public class binarytree,value>
}//獲取樹中元素的個數
public int size()
//向樹中新增元素key-value
public void put(key key, value value)
//向指定的樹x中新增key-value,並返回新增元素後新的樹
private node put(node x, key key, value value)
//如果x子樹不為空
//比較x節點的鍵key的大小:
int cmp = key.compareto(x.key);
if(cmp > 0) else if(cmp < 0) else
return x; }
//查詢樹中指定key對應的value
public value get(key key)
//從指定的樹x中,查詢key對應的值
public value get(node x, key key)
//x樹不為null
//比較key和x節點的鍵的大小
int cmp = key.compareto(x.key);
if(cmp > 0) else if(cmp < 0) else
}//刪除樹中key對應的value
public void delete(key key)
//刪除指定樹x中的ekey 對應的value,並返回刪除後的新樹
public node delete(node x, key key)
//x樹不為null
int cmp = key.compareto(x.key);
if(cmp > 0) else if(cmp < 0) else
if(x.left == null)
node minnode = x.right;
while(minnode.left != null)
//刪除右子樹中最小的節點
node n = x.right;
//一直在右子樹往左找最小的節點
while(n.left != null) else
}//讓x節點的左子樹為minnode的左子樹
minnode.left = x.left;
//讓x節點的右子樹為minnode的右子樹
minnode.right = x.right;
//讓x節點的父節點指向minnode
x = minnode;
} return x; }
}
測試類:
二叉查詢樹的刪除操作
對於二叉樹的刪除操作來說,存在三種情況 1.當刪除節點為葉節點的時候,此時將節點置為空 2.當刪除節點為根節點且該根節點只有乙個子樹的時候,此時需要替換掉刪除元素,最後再進行釋放 3.當刪除節點為根節點且根節點存在兩個子樹的時候,此時我們可以選擇替換左子樹的最大元素,或者右子樹的最小元素 c 如下 ...
二叉樹 二叉樹的查詢
三種查詢方式 前序查詢 中序查詢 後序查詢。前序查詢 比較當前節點,如果是,返回查詢結果。如果不是就向左遞迴查詢,如果左邊沒有就向右邊遞迴查詢。設定no 5,針對該題,前序遍歷共4次。中序遍歷 先向左遞迴查詢,如果左子樹沒有,再比較當前節點,如果仍然不是則向右遍歷查詢。後序遍歷 先向左遞迴查詢,如果...
二叉樹 二叉搜尋樹建立 插入 刪除 查詢等操作
二叉搜尋樹性質如下 二叉搜尋樹篇 include include struct search tree typedef struct search tree typedef typedef struct search tree typedef stree node 向二叉搜尋樹插入乙個元素 int ...