思路:
根據完全二叉樹的定義可知,對完全二叉樹按從上到下,從左到右的(即層序遍歷)遍歷,應該滿足以下兩點:
(1):
若某結點沒有左孩子,則一定沒有右孩子;
(2):
若某節點無左右孩子,則其後繼結點一定沒有孩子;
若不滿足以上的任意一條,則一定不是完全二叉樹。因此可採用層序遍歷二叉樹的方法對每個節點判斷是否滿足以上兩點。為此,需設定兩個標誌變數bj和cm,其中,bj表示所掃瞄過的節點是否均有左右孩子;cm表示最後結果。
**如下:
#include#include#includeusing namespace std;
class tree
} binode,*bitree;
bitree root;
tree()
~tree()
void print()
}else
else}}
}return cm;
}private:
void creat(binode* &bt) else
}void print(bitree t)
}void release(bitree bt)
}};int main()
return 0;
}
完全二叉樹判斷
有一棵二叉樹,請設計乙個演算法判斷它是否是完全二叉樹。給定二叉樹的根結點root,請返回乙個bool值代表它是否為完全二叉樹。樹的結點個數小於等於500。1 按照層遍歷 2 若有右孩子,沒有左孩子,返回false 3 並不是左右孩子都有,後面必須為葉節點 4 便利過程中如果不返回false,則返回t...
判斷完全二叉樹
1 definition for a binary tree node.2 class treenode 3 def init self,val 0,left none,right none 4 self.val val5 self.left left6 self.right right78 判斷乙...
二叉樹 判斷二叉樹是否為完全二叉樹
問題描述 判斷一棵二叉樹是否為完全二叉樹。知識點 完全二叉樹是指除二叉樹的最後一層外,其他各層的節點數達到最大個數,且最後一層的葉節點從左到右連續存在,只缺右側若干節點。演算法實現 class node is complete binary tree public static boolean is...