轉向我的部落格位址
題目描述
給定一棵二叉樹,已經其中沒有重複值的節點,請判斷該二叉樹是否為搜尋二叉樹和完全二叉樹。
示例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...