二叉樹的實現

2021-08-17 20:13:13 字數 1986 閱讀 4253

樹和二叉樹的區別:

樹中節點的子節點個數沒有限制,而二叉樹的節點最多為兩個

樹中的節點無左右之分,而二叉樹有左右之分

完全二叉樹:

若設二叉樹的高度為h,除第h層外,其他各層(1~h-1)的節點數都達到最大個數,第h層有葉子節點,並且葉子節點都是從左到右一次排布

滿二叉樹:

除了葉子節點外每乙個節點都要左右子節點,並且葉子節點都處在最底層的二叉樹

二叉樹的遍歷

先序遍歷(根節點-左孩子-右孩子)

中序遍歷(左孩子-根節點-右孩子)

後序遍歷(左孩子-右孩子-根節點)

二叉樹.jpg

圖示遍歷結果:

先序遍歷:a-b-d-g-c-e-f

中序遍歷:d-g-b-a-e-c-f

後續遍歷:g-d-b-e-f-c-a

首先,定義treenode

public class treenode 

public void setleftreenode(treenode leftreenode)

public treenode getrightnode()

public void setrightnode(treenode rightnode)

public int getvalue()

public void setvalue(int value)

public boolean isdelete()

public void setdelete(boolean isdelete)

public treenode()

public treenode(int value)

public treenode(treenode leftreenode, treenode rightnode, int value, boolean isdelete)

@override

public string tostring()

}

定義二叉樹 binarytree ,並定義先序,中序,後序訪問方法(利用遞迴實現)

public class binarytree 

/*** 插入操作

* * @param value

*/public void insert(int value) else

} else }}

} }/**

* 查詢

* * @param key

* @return

*/public treenode find(int key) else

if (currentnode == null)

}if (currentnode.isdelete()) else

} else

} /**

* 中序遍歷,遞迴實現

* * @param treenode

* @author szy

*/public void inorder(treenode treenode)

} /**

* 先序遍歷,遞迴實現

* * @param treenode

* @author szy

*/public void preorder(treenode treenode)

} /**

* 後續遍歷,遞迴實現

* * @param treenode

* @author szy

*/public void posorder(treenode treenode)

}}

二叉樹 排序二叉樹的簡單實現

二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...

二叉樹實現

include include include include define maxsize 100 define ok 1 define error 0 define true 1 define false 0 typedef int status typedef int telemtype ty...

二叉樹實現

課內最近學了二叉樹,參考書上的 做了二叉樹的實現,尚不完善,還有很多地方不明白。二叉樹實現。define maxsize 100 include using namespace std 定義二叉樹節點 class btnode void createbt btnode bt,char str voi...