樹的相關基礎演算法,先序、中序、後序遞迴與非遞迴,層次遍歷,建立二叉搜尋樹。
#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...