資料結構 二叉樹的基本操作(一)

2021-09-27 11:03:35 字數 2671 閱讀 8397

1.理解二叉樹的基本概念和特點

2.掌握二叉樹的鏈式儲存結構

3.掌握二叉樹的基本操作

1.實現二叉樹的如下操作,二叉樹如下圖所示。(採用二叉鏈儲存結構實現)

(1)輸出二叉樹b;

(2)輸出c節點的左、右孩子節點值;

(3)輸出二叉樹的深度;

(4)輸出二叉樹b的節點個數;

(5)輸出二叉樹b的葉子節點個數。

根據題目為了更加便利建立兩個.cpp檔案,其中btree.h用來存放基本操作的函式,main.cpp來編寫主函式呼叫其他函式,基本內容如下:

(一)btree.h中基本操作函式(詳細**見附錄):

(

1)建立二叉樹createbtnode

(*b,

*str):根據二叉樹括號表示法字串str生成對應的二叉鏈儲存結構,後者的根結點為*b。(2

)查詢結點findnode

(btnode *b,elemtype x):在二叉樹b中尋找data域值為x的結點,並返回指向該結點的指標。(3

)找左孩子結點lchildnode

(btnode *p):求二叉樹中節點*p的左孩子結點。(4

)找右孩子結點rchildnode

(btnode *p):求二叉樹中節點*p的右孩子結點。(5

)求高度btnodedepth

(btnode *b):求二叉樹b的高度,若二叉樹為空,則其高度為0;否則,其高度等於左子樹與右子樹的高度中的最大高度加1。(6

)輸出二叉樹dispbtnode

(btnode *b):以括號表示法輸出一棵二叉樹。(7

)求結點個數nodes

(btnode *b):求二叉樹b的結點個數。(8

)求葉子結點leafnodes

(btnode *b):求二叉樹b的葉子結點個數。(9

)銷毀二叉樹destroybtnode

(btnode *

&b):銷毀二叉樹b。

(二)main.cpp

根據問題依次呼叫基本操作函式並編寫通俗易懂的語句輸出。

執行結果如下:

這次的實驗是參考書本上的**完成的,發現自己的程式設計能力還是有待提高的,另外也學到了很多。首先知道了二叉樹的鏈式儲存結構是指用乙個鍊錶來儲存一顆二叉樹,二叉樹中的每乙個結點用鍊錶中的乙個結點來儲存。然後學習了二叉樹的基本運算演算法實現,收穫了許多。

#include

#include

#define maxsize 100

typedef

char elemtype;

//二叉鏈中節點型別btnode定義

typedef

struct node

btnode;

void

createbtnode

(btnode *

&b,char

*str)

//由str串建立二叉鏈}}

j++; ch=str[j];}

}btnode *

findnode

(btnode *b,elemtype x)

//返回data域為x的節點指標

}btnode *

lchildnode

(btnode *p)

//返回*p節點的左孩子節點指標

btnode *

rchildnode

(btnode *p)

//返回*p節點的右孩子節點指標

intbtnodedepth

(btnode *b)

//求二叉樹b的深度

}void

dispbtnode

(btnode *b)

//以括號表示法輸出二叉樹}}

intnodes

(btnode *b)

//求二叉樹b的節點個數

}int

leafnodes

(btnode *b)

//求二叉樹b的葉子節點個數

}void

destroybtnode

(btnode *

&b)//銷毀二叉樹

}

#include

#include

"btree.h"

intmain()

printf

("\n");

printf

(" (3)二叉樹b的深度:%d\n"

,btnodedepth

(b))

;printf

(" (4)二叉樹b的節點個數:%d\n"

,nodes

(b))

;printf

(" (5)二叉樹b的葉子節點個數:%d\n"

,leafnodes

(b))

;printf

(" (6)釋放二叉樹b\n");

destroybtnode

(b);

return0;

}

資料結構 二叉樹的基本操作(二)

1.理解二叉樹的基本概念和特點 2.掌握二叉樹的鏈式儲存結構 3.掌握二叉樹的基本操作 4.掌握二叉樹遍歷操作 1.實現二叉樹的如下操作,先序遍歷 中序遍歷和後序遍歷的遞迴演算法,二叉樹如下圖所示。採用二叉鏈儲存結構實現 1 採用括號表示法,構建如下二叉樹,並輸出二叉樹b 2 採用遞迴演算法,輸出二...

資料結構 二叉樹鏈結結構基本操作

二叉樹順序儲存的優缺點 順序儲存結構就是使用陣列來儲存,順序結構操作比較簡單,對於堆結構來說,適合使用順序儲存方式來解決。但陣列只適合表示完全二叉樹,對於一般的二叉樹如果採用順序儲存方式會造成大量的空間浪費,這是我們不希望看到的。由此引出來二叉樹的鏈式儲存。並實現二叉樹的以下操作 建立二叉樹 拷貝二...

資料結構 二叉樹基本操作 二叉樹面試題

二叉樹的基本概念就不多說了 如下 binarytree.c pragma once include include include include typedef char btdatatype typedef struct binarytreenode btnode a是乙個前序遍歷的陣列 二叉樹...