求二叉树中求结点总数和二叉树叶子结点的算法的代码
时间: 2024-01-23 20:14:05 浏览: 73
计算二叉树中叶子结点的数目
下面是二叉树求结点总数和叶子结点数量的算法实现(假设二叉树的节点结构体为Node):
求结点总数:
```
int countNodes(Node* root) {
stack<Node*> s;
int count = 0;
if (root != nullptr) {
s.push(root);
}
while (!s.empty()) {
Node* node = s.top();
s.pop();
count++;
if (node->right != nullptr) {
s.push(node->right);
}
if (node->left != nullptr) {
s.push(node->left);
}
}
return count;
}
```
求叶子结点数量:
```
int countLeaves(Node* root) {
stack<Node*> s;
int count = 0;
if (root != nullptr) {
s.push(root);
}
while (!s.empty()) {
Node* node = s.top();
s.pop();
if (node->right != nullptr) {
s.push(node->right);
}
if (node->left != nullptr) {
s.push(node->left);
}
if (node->left == nullptr && node->right == nullptr) {
count++;
}
}
return count;
}
```
注意,这里的叶子结点指的是没有左右子节点的节点。如果定义叶子结点为没有任何儿子节点的节点,则需要修改判断条件。
阅读全文