雙親表示(陣列表示)的樹的基本操作

2021-07-10 17:32:07 字數 1372 閱讀 8093

用陣列表示的雙親節點樹的基本操作更新版:樹的遍歷,樹的深度,葉子結點的計算,樹的構建

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define max_tree_size 100

typedef struct ptnode;

typedef structptree;

/**二叉樹

1/ \

2   3

\   \

4   5/6

a[10]=;

**//**

雙親表示法

r/ | \

a  b  c

/ \    |

d   e   f

/|\g h k

0 r -1

1 a 0

2 b 0  *

3 c 0

4 d 1  *

5 e 1  *

6 f 3

7 g 6  *

8 h 6  *

9 k 6  *

標*的為葉子節點

*//*

void createtree(ptree *t)}*/

void init_ptree(ptree &tree)

void add_ptnode(ptree &tree,ptnode ptnode)

void print(ptree &tree)}*/

void  pre(ptree &tree, int num)

//前序遍歷

}for(int j=0;j<=tree.count;j++)

}return cot;

}int findnode(ptree &tree)

}for(int j=0;j<=tree.count;j++)

return cot;}/*

int treedepth(ptree *t)

if(max>ptnode.data>>ptnode.parent)

cout<<"結點數目"cout<<"遞迴法查詢樹的深度"

for(int l=0;lmaxdeep=max(maxdeep,te);

}cout<<"for迴圈查詢樹的深度"

}/***

測試樣例,輸入##停止

r -1

a 0b 0

c 0d 1

e 1f 3

g 6h 6

k 6##

*/

樹的雙親表示法

之前學習樹多是採用鍊錶的,在羊村捕羊的演算法上,採用了線性儲存,為此學習一下。雙親表示法區別於,鍊錶,是用線性陣列來存放樹的。既然是線性的,就用一維陣列來完成,開始想法是,每個陣列的元素為乙個結構體。typedef struct node n,pn 再用乙個結構體將這個線性陣列的資訊包含起來 typ...

樹的雙親表示法

演算法思想 將這兩個節點的所有祖先節點從下至上依次存放到兩個陣列中,然後遍歷這兩個陣列,第乙個相等的值便是所求值。include define maxsize 100 typedef struct ptnode ptnode 樹的節點結構 typedef struct ptree ptree 樹pt...

樹的孩子雙親表示法

新增鏈結描述 按照上述部落格,測試了一下這個程式.有兩點說說明一下.首先,博主說使用c語言,我第一次用.c檔案編譯,出現error expected or before token 這是使用了引用 而在c語言中沒有引用的概念,在c語言中是取位址符號.後期改為.cpp檔案即可執行 第二點就是 fflu...