小学生网上学做辅导哪个网站好,wordpress前端图片上传,正规代加工项目,恐龙网站建设解法#xff1a; 一棵二叉树是完全二叉树的条件是#xff1a; 对于任意一个结点#xff0c;如果它有右子树而没有左子树#xff0c;则这棵树不是完全二叉树。 如果一个结点有左子树但是没有右子树#xff0c;则这个结点之后的所有结点都必须是叶子结点。 如果满足以上条…
解法 一棵二叉树是完全二叉树的条件是 对于任意一个结点如果它有右子树而没有左子树则这棵树不是完全二叉树。 如果一个结点有左子树但是没有右子树则这个结点之后的所有结点都必须是叶子结点。 如果满足以上条件则这棵二叉树是完全二叉树否则不是完全二叉树。 图解 980: 输出利用先序遍历创建的二叉树的层次遍历序列_swust oj 980: 输出利用先序遍历创建的二叉树的层次遍历序列-CSDN博客
和这道题是一样的在这基础上补二个判断即可
#includeiostream
#includequeue
using namespace std;
struct treeNode {char val;treeNode* left;treeNode* right;treeNode(char x) :val(x), left(NULL), right(NULL) {};
};
treeNode* buildTree() {char ch;cin ch;if (ch #) return NULL;treeNode* root new treeNode(ch);root-left buildTree();root-right buildTree();return root;
}
bool bfs(treeNode* root) {queuetreeNode* q;if (root NULL) return false;q.push(root);int flag 0;while (!q.empty()) {int num q.size();for (int i 0; i num; i) {treeNode* cur q.front();q.pop();if (flag) {if (cur-left || cur-right)return false;}if (cur-right cur-left NULL) return false;if (cur-left cur-right NULL) flag 1;if (cur-left) q.push(cur-left);if (cur-right) q.push(cur-right);}}return true;
}
int main() {treeNode* root buildTree();if (bfs(root)) {cout Y;}else cout N;return 0;
}