Untitled
unknown
plain_text
a year ago
1.7 kB
5
Indexable
struct Node { int data; Node* left; Node* right; Node(int value) { data = value; left = nullptr; right = nullptr; } }; class BinaryTree { private: Node* root; Node* insert(Node* node, int value) { if (node == nullptr) { return new Node(value); } if (value < node->data) { node->left = insert(node->left, value); } else { node->right = insert(node->right, value); } return node; } bool isIdeal(Node* node, int level, int& leafLevel) { if (node == nullptr) { return true; } if (node->left == nullptr && node->right == nullptr) { if (leafLevel == 0) { leafLevel = level; return true; } return level == leafLevel; } if (node->left == nullptr || node->right == nullptr) { return false; } return isIdeal(node->left, level + 1, leafLevel) && isIdeal(node->right, level + 1, leafLevel); } public: BinaryTree() { root = nullptr; } void themNut(int value) { root = insert(root, value); } bool kiemTraLyTuong() { int leafLevel = 0; return isIdeal(root, 0, leafLevel); } }; int main() { int n; cin >> n; BinaryTree cayNhiPhan; for (int i = 0; i < n; ++i) { int k; cin >> k; cayNhiPhan.themNut(k); } if (cayNhiPhan.kiemTraLyTuong()) { cout << "YES" << endl; } else { cout << "NO" << endl; } return 0; }
Editor is loading...
Leave a Comment