用Java語言實現二叉樹刪除結點

2021-06-29 12:49:58 字數 779 閱讀 3375

首先定義結點類 class node :

public class node

然後再定義二叉樹類 class btree

public class btree

//如果右孩子為空,找其父親,

//如果是父親的左孩子,那麼直接讓父親的左孩子指向此節點的左孩子即直接將此節點刪除

//如果是父親的右孩子,那麼直接讓父親的右孩子指向此節點的左孩子即直接將節點刪除

//最後孩子的父親指向此節點的父親,實現雙向指向

else }

// 找到此節點,用到遞迴

public node search(integer val)

public node search(node p, integer val)

else else

}} }

// 找到此節點的中序後繼,中序後繼:就是比此節點大的最小值,在此處用到了min(p.rightchild),下面有定義。順便說一句:前驅:比此節點小的最大值,其操作和min函式

//類似

public node successor(integer val)

else

return p.parent;

} }// 找到後繼樹中最小的節點

public node min(node r)

return r;

} }}

最後是主函式類 class main

public class main ;

for(integer i=0;i

用C語言實現線索二叉樹

為什麼會有線索二叉樹?當以二叉鍊錶形式來儲存二叉樹時,只能找到節點的左右子樹資訊,而不能直接得到節點的前驅和後繼資訊 只有通過遍歷,在動態過程中才能查到前驅和後繼的資訊 因此就有了線索二叉樹,由二叉樹的性質可知,一棵具有 n 個節點的二叉樹,對應的二叉鍊錶中共有 2n 個指標域,其中 n 1 個用於...

C語言實現二叉樹

1.c語言實現二叉樹中節點間最大距離 includetypedef struct treenode treenode 我們可以將所有的結點的左右子樹的高度和計算一下,然後取出最大值,就是最遠的距離。int getmaxdistance treenode root,int maxdistance in...

二叉樹(C語言實現)

以下為用c語言實現的二叉排序樹,包含了樹的建立,銷毀,新增,刪除,修改,前 中 後 層序遍歷,深度,密度。include include include define type int typedef struct node node 建立結點 node creat node type data 新...