C 實現二叉樹的基本操作

2021-10-05 14:12:15 字數 3187 閱讀 8962

1.定義類標頭檔案

#pragma once

#include

using

namespace std;

//定義樹的節點

typedef

struct binode

}binode,

* bitree;

//定義二叉樹類

class

bitree

;

2 實現函式功能

#include

"建立二叉樹.h"

#include

#include

#pragma region

//私有函式成員

bitree bitree::

create()

//遞迴的建立二叉樹的節點

else

}void bitree::

preorder

(bitree root)

//前序遍歷

}void bitree::

inorder

(bitree root)

//中序遍歷

}void bitree::

postorder

(bitree root)

//後序遍歷

}void bitree::

distroy

(bitree root)

//摧毀樹

}int bitree::

getheight

(bitree root)

//遞迴得到樹的高度

}//新增節點

//key為要插入的值,direction是從左子樹插入還是右子樹插入,root為從哪個節點插入

void bitree::

addnode

(const

char key,

int direction, bitree root)

//新增節點

else

if(direction ==1)

}#pragma endregion

//共有函式

#pragma region

void bitree::

create()

int bitree::

getsize()

int bitree::

gethight()

void bitree::

preoorder()

void bitree::

inorder()

void bitree::

postorder()

void bitree::

destroy()

void bitree::

in_preorder

(bitree root)

//非遞迴前序遍歷

bitree tep = s.

top();

s.pop();

cur = tep-

>right;}}

}void bitree::

in_inorder

(bitree root)

//非遞迴中序遍歷

bitree tep = s.

top();

s.pop();

cout << tep-

>data <<

" ";

cur = tep-

>right;}}

}void bitree::

in_postorder

(bitree root)

//非遞迴後序遍歷

//左子樹遍歷完了

bitree tmp = s.

top();

if(tmp-

>right && tmp-

>right != prev)

else}}

void bitree::

levelorder

(bitree root)

//層次遍歷

cout << endl;

}void bitree::

in_levelorder

(bitree root)

//非遞迴層次遍歷

if(arr[front]

->right !=

null

) front++

;//對陣列頭指標後移一位 }}

bool bitree::

_iscompletelybintree

(bitree root)

//判斷樹是否為完全二叉樹

else

else

if(tep-

>left)

else

if(tep-

>right)

return

false

;else

deal =

true;}

q.pop();

}return

true;}

void bitree::

_mirror

(bitree root)

//樹的映象遞迴實現

}void bitree::

_mirror1

(bitree root)

//樹的映象非遞迴實現

cout << endl;

}bitree bitree::

_find

(bitree root,

const

char

& data)

//查詢結點

bool bitree::

_isnodeinbintree

(bitree root, bitree word)

//判斷結點是否存在二叉樹中

int bitree::

_getklevelnode

(bitree root,

int k)

//求第k層結點的個數

int bitree::

_height1

(bitree root)

//樹的高度

int bitree::

_countleft

(bitree root)

//葉子結點的個數

#pragma endregion

C 實現二叉樹的基本操作

樹是一種重要的非線性資料結構,二叉樹是樹型結構的一種重要型別。本學年 介紹了二叉樹的定義,二叉樹的儲存結構,二叉樹的相關術語,以此引入二叉樹這一概念,為展開二叉樹的基本操作做好理論鋪墊。二叉樹的基本操作主要包含以下幾個模組 二叉樹的遍歷方法,計算二叉樹的結點個數,計算二叉樹的葉子結點個數,二叉樹深度...

二叉樹的基本操作實現

二叉樹需要不斷的自己畫圖並且一步一步的跟著程式走才能明白它的原理 二叉樹結點結構定義 binode,bitree 通過前序遍曆法建立一棵二叉樹,其形參使用結點的二級指標。當每個葉結點的左右孩子是 時表示二叉樹建立完成 void createtree bitree t 釋放二叉樹空間 void des...

C 實現二叉樹基本操作詳解

樹是一種重要的非線性資料結構,二叉樹是樹型結構的一種重要型別。本學年 介紹了二叉樹的定義,二叉樹的儲存結構,二叉樹的相關術語,以此引入二叉樹這一概念,為展開二叉樹的基本操作做好理論鋪墊。二叉樹的基本操作主要包含以下幾個模組 二叉樹的遍歷方法,計算二叉樹的結點個數,計算二叉樹的葉子結點個數,二叉樹深度...