判斷一棵樹是否為搜尋二叉樹,是否為完全二叉樹

2021-10-09 07:32:32 字數 820 閱讀 4110

搜尋二叉樹:一棵樹上任何乙個節點為頭的子數,左子樹都比它小,右子樹都比它大

只要中序遍歷的結果是依次公升序的,它就是平衡二叉樹

#include

#include

using

namespace std;

class

isbstandcbt};

bool

isbst

(node *head)

else}}

return

true;}

};

完全二叉樹:當二叉樹的深度為h時,它的h層節點必須都是連續靠左並不可隔開的(滿二叉樹也符合),並且1~h-1層的結點數都達到最大個數(即1~h-1層為乙個滿二叉樹)。

判斷是否完全二叉樹的方法是按層遍歷:

(1)乙個節點,如果只有右子樹,沒有左子樹,它一定不是完全二叉樹,直接return false

(2)乙個節點,如果之有左子樹,沒有右子樹,那它後面的所有節點,都必須是葉節點,否則返回false。

bool

iscbt

(node *head)

if(l!=

nullptr)if

(r!=

nullptr

)else

}return

true

;}

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

二叉樹中序遍歷的情況下,遍歷結果是所有節點依次公升序的,就是搜尋二叉樹,否則就不是。由此我們可以對之前非遞迴版本的中序遍歷稍加修改,在列印節點的時機判斷當前節點是否大於上乙個節點,就可以判斷此二叉樹是否是搜尋二叉樹。1中序遞迴遍歷二叉樹,將結果儲存進乙個stack 2比較大小,棧頂為大,棧頂為小。i...

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

中序遍歷得到的值一定是公升序的,所以我們只要在遍歷的時候實時地檢查當前元素是否大於上乙個遍歷的值 lastnum 如果小於或等於,可直接得出不是二叉搜尋樹的結論。用棧來模擬中序便利的過程。definition for a binary tree node.public class treenode ...

判斷一棵樹是否為滿二叉樹

首先,我們要知道什麼是滿二叉樹。乙個深度為k,節點個數為 2 k 1 的二叉樹為滿二叉樹。這個概念很好理解。那麼,我們要怎麼判斷一棵樹是否為滿二叉樹呢?思路 在層序遍歷的過程中,找到第乙個非滿節點 non full node 滿節點 full node 指的是同時擁有左右孩子的節點。在找到第乙個非滿...