二叉樹遞迴遍歷及其相關操作

2021-08-20 02:12:52 字數 2777 閱讀 6546

二叉樹的基本結構是由根節點、左子樹、右子樹三個部分構成。其有3中遍歷方式:

1. 先序遍歷:根節點、左子樹、右子樹

2. 中序遍歷:左子樹、根節點、右子樹

3. 後序遍歷:左子樹、右子樹、根節點

輸入的二叉樹ab#dg###ce##fh###,3種遍歷節點序列如下:

#include

#include

/**性質:

*1.在二叉樹的第i層上至多有2^(i-1)個節點(i>=1)

*2.深度為k的二叉樹至多有2^k-1個節點(k>=1)

*3.對於任意一棵二叉樹t,若終端節點數為n0,度為2的節點數為n2,則n0=n2+1

*4.具有n個節點的完全二叉樹的深度為log2n+1

*/static int count=0,depth=0,h=1;

typedef char datatype;

typedef struct node

bitnode,*bitree;

//初始化二叉樹

void initbitree(bitree *root);

void initbitree(bitree *root)

//二叉樹判空

int emptybittree(bitree root);

int emptybittree(bitree root)

//建立二叉樹

void createbitree(bitree *root);

void createbitree(bitree *root)

}//銷毀二叉樹

void

destroybitree

(bitree *root);

void

destroybitree

(bitree *root)

}//輸出節點值

void

visit

(datatype ch);

void

visit

(datatype ch)

//按樹狀列印二叉樹

void

printtree

(bitree root,int h);

void

printtree

(bitree root,int h)

//先序遍歷二叉樹

void

preorder

(bitree root);

void

preorder

(bitree root)

}//中序遍歷二叉樹

void

inorder

(bitree root);

void

inorder

(bitree root)

}//後序遍歷二叉樹

void

postorder

(bitree root);

void

postorder

(bitree root)

}//先序遍歷統計二叉樹的節點數

intpreordernode

(bitree root);

intpreordernode

(bitree root)

}//中序遍歷輸出二叉樹的葉子結點

void

inorderleafnode

(bitree root);

void

inorderleafnode

(bitree root)

}//後序遍歷統計葉子結點數目

intgetleafnode

(bitree root);

intgetleafnode

(bitree root)

//1.全域性變數法求二叉樹高度

void

treedepth

(bitree root,int h);

void

treedepth

(bitree root,int h)

//2.通過函式值返回求二叉樹高度

intposttreedepth

(bitree root);

intposttreedepth

(bitree root)

}//求節點雙親

bitree

parent

(bitree root,bitree current);

bitree

parent

(bitree root,bitree current)

//二叉樹相似性判定

intlike

(bitree t1,bitree t2);

intlike

(bitree t1,bitree t2)

}//得到根節點

datatype

getroot

(bitree root);

datatype

getroot

(bitree root)

//旋轉左右子樹

void swap(bitree *root);

void swap(bitree *root)

else

return ;

}/*請輸入二叉樹的節點內容: ab#dg###ce##fh###

先序遍歷: abdgcefh

中序遍歷: bgdaechf

後序遍歷: gdbehfca*/

intmain

()

二叉樹遍歷及其相關問題

二叉樹的定義 在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第...

二叉樹及其遍歷

滿二叉樹肯定是完全二叉樹,完全二叉樹不一定是滿二叉樹 二叉樹的遍歷 先序遍歷 也叫做先根遍歷 前序遍歷,首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。中序遍歷 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。...

二叉樹及其遍歷

二叉樹是乙個很重要的儲存結構,所以和大家分享一下我對二叉樹的理解並結合 希望讓大家都能對二叉樹有乙個最清晰的認識 首先,二叉樹是每個節點最多有兩個子樹的樹結構,這是二叉樹的定義,二叉樹的結構如下圖 可以看到二叉樹必要的是根節點,也就是a,每個節點都會有左子節點和右子節點,那麼從b開始看,它又是乙個二...