中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-02 21:18:15 來源:網絡 閱讀:850 作者:小止1995 欄目:編程語言

判斷二叉樹是否為完全二叉樹。完全二叉樹的定義是,前n-1層都是滿的,第n層如有空缺,則是缺在右邊,即第n層的最右邊的節點,它的左邊是滿的,右邊是空的。

這個問題的描述已經提示了解法,采用廣度優先遍歷,從根節點開始,入隊列,如果隊列不為空,循環。遇到第一個沒有左兒子或者右兒子的節點,設置標志位,如果之后再遇到有左/右兒子的節點,那么這不是一顆完全二叉樹。

這個方法需要遍歷整棵樹,復雜度為O(N),N為節點的總數。



#include<iostream>
#include<queue>
using namespace std;
bool leftMost =false;
queue<Node*> q;
bool ProcessChild(Node* node)
{
	if(node)
	{
		if(!leftMost)
		{
			q.push_back(node);
		}
		else
			return false;
	}
	else
		leftMost=true;
	return true;
}
bool IsCompleteBinaryTree(Node* root)//層序遍歷 
{
	if(root==NULL)
		return true;
	q.push_back(root);
	while(!q.empty())
	{
		Node* node=q.pop();
		if (!ProcessChild(node->left))  
            return false;  
  
        //處理右節點  
        if (!ProcessChild(node->right))  
            return false;  
	}
	return true;

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福海县| 江津市| 辛集市| 龙里县| 宁陕县| 达州市| 黎平县| 雷州市| 大悟县| 奈曼旗| 青铜峡市| 柯坪县| 双辽市| 霞浦县| 甘泉县| 玉田县| 潢川县| 永州市| 眉山市| 旬阳县| 越西县| 宁南县| 开平市| 泰顺县| 闽清县| 屏东市| 那坡县| 望江县| 嘉义县| 伊吾县| 永康市| 新和县| 永嘉县| 兴义市| 呼玛县| 湛江市| 新晃| 阿拉善左旗| 桂阳县| 治多县| 桦南县|