1.判斷b是否為a的子結構
思路:b如果為a的子結構,要麼b和a一樣,要麼b就是a的左子樹或右子樹的一部分;
對a的當前節點來說,如果和b的節點相同,那麼a的左右子樹的節點都要和b相同,(&&的關係);對a的當前節點來說,如果和b的節點不相同,那麼在判斷左右子樹上是否有相同的,(||的關係);
圖為:
**為:
bool issubstruct(binarytree& b)
bool _issubstruct(node* root1,node* root2)
2.判斷一顆二叉樹是否為完全二叉樹
什麼是完全二叉樹
:除最後一層外,每一層上的節點
數均達到最大值;在最後一層上只缺少右邊的若干結點。
例如:
思路:利用佇列先進先出的性質,層次遍歷這棵樹,在佇列中遇到null就停止遍歷這棵樹,當佇列不為空時,如果這棵樹是完全二叉樹,那麼佇列中的值都為null,否則就不是完全二叉樹;
bool iscompletebinarytree()
q.pop();
while(!q.empty())
q.pop();
} return true;
}
二叉樹相關面試題
void treepreorderbyloop treenode root return void treeinorderbyloop treenode root 若cur為空,取棧頂元素,訪問,出棧 treenode top null int ret gettop stack,top if ret...
二叉樹相關面試題
二叉樹的建立 1.求二叉樹節點個數 private static int count 0 public static void getsize node root count getsize root.left getsize root.right public static int getsize...
二叉樹的相關面試題
public class code01 dgmodel 先序遍歷 頭左右 public void preorderrecur node head system.out.println head.value preorderrecur head.left preorderrecur head.righ...