二叉樹的基本結構是由根節點、左子樹、右子樹三個部分構成。其有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開始看,它又是乙個二...