判斷該二叉樹是否為搜尋二叉樹和完全二叉樹。

2021-10-09 19:39:13 字數 1095 閱讀 9028

轉向我的部落格位址

題目描述

給定一棵二叉樹,已經其中沒有重複值的節點,請判斷該二叉樹是否為搜尋二叉樹和完全二叉樹。

示例1輸入:

輸出

[true,true]

備註:

n≤500000

其中,判斷搜尋二叉樹,只需要中序遍歷一次,取出值,看是否是遞增即可。

判斷是否是完全二叉樹,只需要按層遍歷一次,找到第乙個null的節點即可。建立乙個佇列,進行儲存,儲存每乙個節點,然後按順序拿出來,找到第乙個null的節點,意味著後面的拿出來的節點,不可能不是null。

我的錯誤:

在搜尋二叉樹裡面,將vector建立的vc放到了函式裡面,沒有建立全域性的,導致出現vc存入出錯。

以後:盡量這種還是建立全域性,比較方便,和不容易錯誤!記錄!

/**

* struct treenode ;

*/class

solution

bool

issousuo

(treenode* head)

return

true;}

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

/* 完全二叉樹考慮層次遍歷出現的第乙個空節點!

*/bool

iswanquan

(treenode *head)

if(notcomplete)

return

false

;//如果是true,前面的應該是有null,該節點不是null,說明不是完全二叉樹

//左右兩孩子,即便是null,也存入。

que.

push

(p->left)

; que.

push

(p->right);}

return

true;}

vector<

bool

>

judgeit

(treenode* root)

};

判斷二叉樹是否為二叉搜尋樹

剛開始我想的很簡單,覺得只要遞迴判斷左孩子是否小於根節點 右孩子是否大於根節點就行了 二叉搜尋樹 左孩子 根結點 右孩子 根節點 下面的寫法 錯的!錯的!二叉樹的判斷應該是左子樹的最大值 小於 根節點 右子樹的最小值大於根節點 bool isvalidbst treenode root if roo...

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

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

判斷二叉樹是否為平衡二叉樹

一 線性思維 遍歷每個節點都時候,求左右子樹的深度,如果左右子樹深度相差不超過1,繼續遞迴遍歷左右節點,此種方法會重複遍歷,時間效率不高 is balanced t if t is null return true left treedepth t.left right treedepth t.ri...