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

2021-07-13 21:47:45 字數 605 閱讀 1429

首先,我們要知道什麼是滿二叉樹。乙個深度為k,節點個數為 2^k - 1 的二叉樹為滿二叉樹。這個概念很好理解。

那麼,我們要怎麼判斷一棵樹是否為滿二叉樹呢?

思路:在層序遍歷的過程中,找到第乙個非滿節點(non-full node)。滿節點(full-node)指的是同時擁有左右孩子的節點。在找到第乙個非滿節點之後,剩下的節點不應該有孩子節點;如果有,那麼該二叉樹就不是完全二叉樹。

bool iscompletetree(node* root)  

else

else if(temp->right) //如果只存在右孩子,則,一定不滿足滿二叉樹

return false;

else if(temp->left)

else

flag = true;

} }

return true;

}

網友還曾說,可以根據完全二叉樹的定義,左邊的深度》=右邊的深度。從根節點開始,分別沿著最左最右分支下去,找到最左和最右的深度。如果左邊比右邊深1,再分別檢查以左兒子和右兒子為根的兩根樹。但是嘗試了幾遍,感覺不對,但是,讀者可以自己尋找。

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

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

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

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

二叉樹 判斷是否同一棵樹

搜尋樹表示 建立搜尋樹 判斷序列與搜尋樹是否一致 define crt secure no warnings include stdlib.h include stdio.h 搜尋樹表示 typedef struct treenode tree struct treenode tree newnod...