二叉鍊錶中,每個結點除了儲存本身的資料外,還應該設定兩個指標域left和right,它們分別指向左孩子和右孩子。
當需要在二叉樹中經常尋找某結點的雙親,每個結點還可以加乙個指向雙親的指標域parent,這就是三叉鍊錶,
下面的兩幅圖分別就是,二叉鍊錶和三叉鍊錶的資料結構:
和
二叉樹的結構有一些性質來用於幫助我們建樹:
對於一棵滿二叉樹樹中每乙個節點,我們可以對他從上到下,從左到右的進行編號i:
(1) 此結點為根結點,無雙親,那麼它的索引號為0
(2) 結點i的左孩子為2i + 1,右孩子為2i + 2
(3) 如果i > 0,當i為奇數時,它是其雙親結點的左孩子,它的兄弟為i + 1;當i為偶數時,它是其雙親結點的右孩子,它的兄弟結點為i – 1
**實現:
(1)二叉樹結點類
public class nodepublic node getleft()
public void setleft(node left)
public node getright()
public void setright(node right)
public object getdata()
public void setdata(object data)
public string tostring()
}
(2)二叉樹類
public class binarytreepublic binarytree(string data)
public void add(node parent, int index)
}// 算出右結點的位置
int rightindex = 2 * index + 2;
if (rightindex < datastr.length()) }}
public void preorader(node node)
}public void midorder(node node)
}public void backorder(node node)
}public static void main(string args)
}
ps:
資料結構 鏈式二叉樹
include using namespace std typedef struct treenode treenode,treep 初始化二叉樹 void init tree treep root 前序遍歷二叉樹 void pre order treep rt 中序遍歷二叉樹 void mid o...
資料結構 鏈式二叉樹
define error 0 define true 1 define false 0 status是函式的型別,其值是函式結果狀態 如ok等 typedef int status typedef int telementtype ifndef bitree h included define bi...
資料結構 鏈式二叉樹
include iostream using namespace std typedef struct treenode treenode,treep 初始化二叉樹 void init tree treep root 建立二叉樹 void creat tree treep rt 前序遍歷二叉樹 vo...