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

2021-10-04 14:33:21 字數 787 閱讀 6488

#include

#include

//節點

struct node };

//銷毀二叉樹

void

destroy_tree

(node* root)

destroy_tree

(root->left)

;destroy_tree

(root->right)

; delete root;

}//是否為完全二叉樹

bool is_cbtree

(node*

&head)

node *left;

node *right;

bool leaf = false;

std:

:queue> q;

q.push

(head)

; node* root;

while

(!q.

empty()

)//如果乙個節點只有右孩子沒有左孩子,那麼不是完全二叉樹

if(right != nullptr && left == nullptr)

if(left != nullptr)

if(right != nullptr)

//如果乙個節點沒有右孩子,後面的節點必須全是葉節點

if(right == nullptr)

}return true;

}int

main

(void

)

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

問題描述 判斷一棵二叉樹是否為完全二叉樹。知識點 完全二叉樹是指除二叉樹的最後一層外,其他各層的節點數達到最大個數,且最後一層的葉節點從左到右連續存在,只缺右側若干節點。演算法實現 class node is complete binary tree public static boolean is...

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

判斷二叉樹是否為完全二叉樹 完全二叉樹看起來就像是滿二叉樹右下角缺了一口。思路 需要引入乙個標誌位來區分兩個階段 1.先對該樹進行層序遍歷,會出現兩種階段 a 任何乙個節點都有兩顆子樹 當遇到乙個結點沒有子樹或者只有左子樹時,那麼就進入第二階段。當遇到乙個節點只有右子樹時,那麼這棵樹一定不是完全二叉...

二叉樹是否為完全二叉樹

單鏈表查詢倒數第k的結點 下圖判斷是否二叉樹 假設圖中三個二叉樹的黃顏色部分沒有,各樹的名稱就是圖上所標。首先由要求,需要層序遍歷,層序遍歷會使用到佇列。要判斷乙個二叉樹是否為完全二叉樹,首先需要找到臨界點,比如此二叉樹c結點。如果c結點沒有左右孩子,現在就要判斷,b的左右孩子d和e,只要d和e至少...