二叉樹的順序儲存常見操作

2021-10-02 11:04:33 字數 3804 閱讀 3608

一:

二叉樹的順序儲存結構

二:建立二叉樹的過程

三:**實現

#ifndef   _seqtree_h

#define _seqtree_h

#include

#include

#include

#include

#define maxsize 100

typedef

char seqtree[maxsize]

;extern

void

initseqtree

(seqtree tree)

;extern

void

createseqtree

(seqtree tree,

int i)

;extern

intgetseqtreedepth

(seqtree tree)

;extern

intgetseqtreelength

(seqtree tree)

;extern

char

getseqtreeroot

(seqtree tree)

;#endif

// !_seqtree_h

#include

"seqtree.h"

/* 初始化空二叉樹 */

void

initseqtree

(seqtree tree)

}/* 建立完全二叉樹,i為陣列中的下標 */

void

createseqtree

(seqtree tree,

int i)

tree[i]

= ch;

//某個結點輸入完畢後,還需要讓使用者輸入左孩子和右孩子

printf

("左孩子結點:");

createseqtree

(tree,

2* i +1)

;//遞迴呼叫

printf

("右孩子結點:");

createseqtree

(tree,2*

(i +1)

);}/* 獲取樹的根結點元素 */

char

getseqtreeroot

(seqtree tree)

/* 獲取樹的結點數 */

intgetseqtreelength

(seqtree tree)

return len;

}/* 獲取樹的深度 */

intgetseqtreedepth

(seqtree tree)

return depth;

}

#include

"seqtree.h"

intmain()

printf

("\n");

system

("pause");

return0;

}

注:**測試還有點問題。

以下是修改後的**,測試無誤。

#include

"seqtree.h"

voidk(

int i)

;int

main()

printf

("\n");

root=

getseqtreeroot

(tree)

;printf

("根結點元素為:%d\n"

, root)

; count =

getseqtreelength

(tree)

;printf

("樹的結點個數為:%d\n"

, count)

; depth =

getseqtreedepth

(tree)

;printf

("樹的深度為:%d\n"

, depth)

;system

("pause");

return0;

}

#include

"seqtree.h"

/* 初始化空二叉樹 */

void

initseqtree

(seqtree tree)

}/* 建立完全二叉樹,i為陣列中的下標 */

void

createseqtree

(seqtree tree,

int i)

tree[i]

= k;

//某個結點輸入完畢後,還需要讓使用者輸入左孩子和右孩子

printf

("左孩子結點:");

createseqtree

(tree,

2* i +1)

;//遞迴呼叫

printf

("右孩子結點:");

createseqtree

(tree,2*

(i +1)

);}/* 獲取樹的根結點元素 */

intgetseqtreeroot

(seqtree tree)

/* 獲取樹的結點數 */

intgetseqtreelength

(seqtree tree)

return len;

}/* 獲取樹的深度 */

intgetseqtreedepth

(seqtree tree)

return depth;

}

#ifndef   _seqtree_h

#define _seqtree_h

#include

#include

#include

#include

#define maxsize 100

typedef

int seqtree[maxsize]

;extern

void

initseqtree

(seqtree tree)

;extern

void

createseqtree

(seqtree tree,

int i)

;extern

intgetseqtreedepth

(seqtree tree)

;extern

intgetseqtreelength

(seqtree tree)

;extern

intgetseqtreeroot

(seqtree tree)

;#endif

// !_seqtree_h

//測試結果

順序儲存二叉樹

從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列,看下面的示意圖。順序二叉樹通常只考慮完全二叉樹 第n個元素的左子節點為 2 n 1 第n個元素的右子節點為 2 n 2 第 n 個元素的父節點為 n 1 2 n 表示二叉樹中的第幾個元素 按 0 開始編號...

順序儲存二叉樹

從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列。陣列轉換成樹即是將陣列中的各個元素按照二叉樹的層次儲存起來的過程。原陣列 1,2,3,4,5,6,7 轉換為順序二叉樹如下圖所示 順序儲存二叉樹的特點 通常只考慮完全二叉樹 第n個元素的左子節點為2 n ...

順序儲存二叉樹

package com.datastructure.tree.binarytree 順序儲存二叉樹 1。順序儲存二叉樹通常只考慮完全二叉樹 2。第n個元素的左子節點為2 n 1 3。第n個元素的右子節點為2 n 2 4。第n個元素的父親節點為 n 1 2 public class sequentia...