首先定義結點類 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 新...