樹的相關基礎演算法

2021-06-19 16:06:31 字數 1982 閱讀 1388

樹的相關基礎演算法,先序、中序、後序遞迴與非遞迴,層次遍歷,建立二叉搜尋樹。

#include 

#include 

#include 

using namespace std;

typedef struct tree bstree;

bstree* newbstree(

int n)

void createtree(bstree *

&root,

int val)

}else

if(val > p-

>val)}}

}}/*

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**//

*遞迴遍歷系列*

/void preorderrecursion(bstree* root)

//先序遍歷:根——左——右

void inorderrecursion(bstree* root)

//中序遍歷:左——根——右

void postorderrecursion(bstree* root)

//後序遍歷:左——右——根/*

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

**//

*非遞迴遍歷系列*

/void preordernonrecursion(bstree* root)

//先序非遞迴if(

!st.

empty()

)}}void inordernonrecursion(bstree* root)

//中序非遞迴if(

!st.

empty()

)}}void postordernonrecursion(bstree* root)

//後序非遞迴

proot = st.top();

if(proot-

>rchild =

=null

|| proot-

>rchild =

= q)

else

proot = proot-

>rchild;}}

void levelreverse(bstree* root)

//層次遞迴}/

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

***/

int main();

bstree *root =

null

;int i, length = sizeof array

/ sizeof array

[0];

for(i = 0; i < length; i++)

createtree(root,

array

[i])

;levelreverse(root)

;cout <

< endl;}

與樹相關的演算法

1.樹的直徑 須知 對於一棵加權樹,權值定義為樹中兩個結點之間的距離,兩個結點間的最遠距離即為樹的直徑。最遠距離的兩個結點對應樹中的兩個葉子結點,否則兩個結點不構成最遠距離。m 1 動態規劃 由於兩個結點都是屬於樹的端結點 葉子結點 那麼對兩個結點向上朔源必會得到乙個公共的祖先結點 x。從 x 出發...

演算法題 樹相關

題目 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。方法1 遞迴 class solution def maxdepth self,root type root treenode rtype int if root is none return 0else ...

樹相關演算法總結 based C

重點 前中後序遍歷 遞迴和非遞迴 層序遍歷,搜尋二叉樹的查詢。資料結構 struct treenode 樹的三種遍歷方式,各兩種實現演算法 遞迴和非遞迴 一 前序遍歷 前序遍歷方式 根左右 遞迴實現 遞迴實現的方式 一般比較簡單快捷。void preorder1 treenode root cout...