编写数据结构完整代码,实现在以二叉链表存储的二叉树中,求度为 2的结点的个数。
时间: 2023-12-03 07:47:39 浏览: 64
以下是求解二叉树中度为2的结点个数的完整代码实现:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
class BinaryTree {
public:
BinaryTree() : root(nullptr) {}
void insert(int val) {
if (!root) {
root = new TreeNode(val);
return;
}
TreeNode* cur = root;
while (true) {
if (val < cur->val) {
if (cur->left) {
cur = cur->left;
} else {
cur->left = new TreeNode(val);
return;
}
} else {
if (cur->right) {
cur = cur->right;
} else {
cur->right = new TreeNode(val);
return;
}
}
}
}
int countNodesOfDegreeTwo() {
return countNodesOfDegreeTwo(root);
}
private:
TreeNode* root;
int countNodesOfDegreeTwo(TreeNode* node) {
if (!node) return 0;
int count = 0;
if (node->left && node->right) count++;
count += countNodesOfDegreeTwo(node->left) + countNodesOfDegreeTwo(node->right);
return count;
}
};
int main() {
BinaryTree tree;
tree.insert(5);
tree.insert(3);
tree.insert(7);
tree.insert(2);
tree.insert(4);
tree.insert(6);
tree.insert(8);
cout << "The number of nodes of degree 2 in the binary tree is: " << tree.countNodesOfDegreeTwo() << endl;
return 0;
}
```
在这里,我们定义了一个 `TreeNode` 结构体,它包含一个整数值、一个左子树和一个右子树。然后,我们定义了一个 `BinaryTree` 类,它通过 `insert` 函数向二叉树中插入节点,通过 `countNodesOfDegreeTwo` 函数计算二叉树中度为2的结点个数。最后,在 `main` 函数中,我们创建了一棵二叉树并调用了 `countNodesOfDegreeTwo` 函数。
阅读全文