資料結構之 樹

2021-07-06 05:05:41 字數 2601 閱讀 2912

1.雙親表示法:【【 下標】【資料】【parentid】】

2.孩子表示法:【【data】【child1】【child2 】【child3】....】

3.雙親孩子表示法:【【下標】【parentid】【firstchildid】【secondchildid】....】  節點:【【下標】【next】】 頁的話next應該是null

4.孩子兄弟表示法:【【data】【第一次child】【右邊兄弟】】1

/   \

2          3

/       \             \   

4             5            7

【null】

【左孩子指標】【data】【右孩子指標】

下面通過二叉鍊錶來建立一顆樹:

樹節點:

public class treenode

建立樹:

public class mytree 

public void setroot(treenode root)

public int gettreenodenums()

/**建立樹

* 2023年10月27日下午4:13:23

* @param treenode

* @param data

*/public void createtree(treenode treenode, int data) else else

} else if (data > treenode.getdata()) else

}}

}}

前序遍歷:先列印,再遍歷左右

/**前序遍歷

* 2023年10月27日下午3:51:49

*/public void presearch(treenode treenode)

if(treenode.getrightchild()!=null)

}

中序遍歷:先打遍歷左後列印再遍歷右

/**中序遍歷

* 2023年10月27日下午4:22:51

* @param treenode

*/public void midsearch(treenode treenode)

system.out.println("----mid-:"+treenode.getdata());

if(treenode.getrightchild()!=null)

}

後序遍歷:先遍歷左右,再列印

/**後序遍歷

* 2023年10月27日下午4:22:49

* @param treenode

*/public void latesearch(treenode treenode)

if(treenode.getrightchild()!=null)

system.out.println("----late-:"+treenode.getdata());

}

線索二叉樹:n個節點的二叉鍊錶中含有n+1個空指標域,所有可以利用這些指標域存放某種遍歷序下的前驅與後繼。可以用乙個標示如ltag,當ltag=0時存的指標域是左child節點的位址,當ltag=1時存的是前繼的位址,rtag一樣,為0時存右child節點的位址,為1時存後繼節點的位址。

線索二叉樹的構建以二叉鍊錶是一樣的,線索化的核心就是在遍歷的時候判斷到空指標時將前驅或後繼新增進去。

以下是建立二叉樹已經過前序遍歷後將其線索化的實現**:

public class cluetree 

public void setroot(cluetreenode root)

/**建立樹

* 2023年10月27日下午4:13:23

* @param treenode

* @param data

*/public void createtree(cluetreenode treenode, int data) else else

} else if (data > treenode.getdata()) else

}} }

/**前序遍歷,線索化樹

* 2023年10月27日下午7:27:57

* @param node

* @return

*/public void presearch(cluetreenode node)

else

}else

if(node.getrightnode()==null)//右節點為空,而且不是根節點,設定後繼

}else

}}

資料結構之樹

一 樹的基本概念 樹 tree 是元素的集合,樹有多個節點可以儲存元素 二 二叉樹 每個節點最多有兩個子節點的樹稱為二叉樹 常用來做二分查詢 binary search 等 三 b樹 即二叉搜尋樹 binary search tree 是一種特殊形態的二叉樹 1 所有節點最多擁有2個子節點 2 所有...

資料結構之樹

樹是節點的有限集合.度 a的度是3 b的度是2 d的度是2 c的度為0 當前節點的直接分支 葉子 終端節點就是葉子 e f g h c 根 非終端節點就是根 a b d 有序樹 如果e f不可以隨意換順序 就是有序樹 無序樹 如果 e f可以隨意換順序而且不影響邏輯 祖先 對e來說 b,a都是祖先 ...

資料結構之樹

1.樹是什麼?樹是n個結點組成的一種非線性結構。2.樹的屬性 1 父母 孩子和兄弟結點 結點的前驅結點稱為父母結點,後繼結點是孩子,相同父母結點的結點稱為兄弟。2 度 結點的度指的是擁有子樹的數量。葉子結點的度為0,樹的度是結點的度的最大值。3 結點層次,樹的高度 結點的層次指的是結點處於樹的層次位...