除最後一層無任何孩子外,每一層上的所有結點都有左右孩子的二叉樹叫做滿二叉樹。
判斷一棵二叉樹是不是滿二叉樹,首先是遞迴的方法:
空樹是滿二叉樹,非空的樹當且僅當它的左右子樹都是滿二叉樹的時候,它就是一棵滿二叉樹。
每個子樹應當滿足:① 同時存在左子樹和右子樹;② 左右子樹高度相同。
/*每個節點都存在左右孩子並且左右子樹深度相同時是滿二叉樹*/
int height(tree& t)
bool isfulltree(tree& t)
非遞迴的辦法:
利用廣度優先遍歷,記錄每層的寬度,判斷每層的寬度是否符合 2 ^(n - 1)。
bool levelorder(tree& t)
if(width < num) return false; //只要有一層出隊個數小於num,那麼就不是一棵滿二叉樹
else num *= 2;
} return true;
}
總的**如下:
#include#includeusing namespace std;
typedef struct nodetreenode,*tree;
//非遞迴
/*由根向下進行廣度優先遍歷,判斷每層是否為滿*/
bool levelorder(tree& t)
if(width < num) return false; //只要有一層出隊個數小於num,那麼就不是一棵滿二叉樹
else num *= 2;
} return true;
}//遞迴
/*每個節點都存在左右孩子並且左右子樹深度相同時是滿二叉樹*/
資料結構筆記 樹 二叉樹 滿二叉樹
二叉樹滿二叉樹 樹是n n 0 個結點的有限集。結點為零的樹為空樹。任意一棵非空樹中 1.有且有乙個特定的稱為根的結點 2.當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每乙個集合又是一棵樹,並稱為根的子樹。1.結點擁有的子樹數稱為結點的度 2.度為0的結點稱為葉結點或分支結點,除根...
資料結構之滿二叉樹
二叉樹 二叉樹是n n 0 個結點的有限集合,它或為空 n 0 或是由乙個根及兩棵互不相交的左子樹和右子樹組成,且樹中左子樹和右子樹也均為二叉樹 二叉樹可以是空集合,左子樹 右子樹也可以為空 二叉樹的特點 二叉樹可以是空的,稱空二叉樹 每個結點最多只能有兩個孩子 子樹有左 右之分且次序不能顛倒 二叉...
資料結構 樹結構 二叉樹 完全二叉樹 滿二叉樹
樹結構是一種描述非線性層次關係的資料結構。除根結點外,其餘每個結點有且僅有乙個直接前驅。每個結點可以有任意多個直接後繼。英文名詞表示 tree,root,node,leaf,edge,child,subtree 要麼二叉樹沒有根結點,是一棵空樹。要麼二叉樹由根結點,左子樹,右子樹組成,且左子樹和右子...