uicccui 2021-11-24 18:56 采纳率: 42.9%

数据结构与算法“play with tree”

Given a binary tree, your task is to get the height and size(number of nodes) of the tree.
The Node is defined as follows.

struct Node {
Node *lc, *rc;
char data;
};

Implement the following function.

void query(const Node *root, int &size, int &height)
{
}

In this problem, we assume that the height of the tree with only one node is 1.

• 写回答

1条回答默认 最新

• 广大菜鸟 2021-11-25 01:06
关注
``````
#include<iostream>
using namespace std;

#define max(a,b) ((a)>(b)?(a):(b))

struct Node {
struct Node* lc, * rc;
char data;
};

void query(const Node* root, int& size, int& height) {
if (root == NULL) return;
int leftHeight = 0, rightHeight = 0;
query(root->lc, size, leftHeight);
query(root->rc, size, rightHeight);
size += 1;
height = 1 + max(leftHeight, rightHeight);
}

int main() {
//测试案例:
//            root
//        lc            rc
Node* root = (Node*)malloc(sizeof(Node));
if (root != NULL) {
root->rc = (Node*)malloc(sizeof(Node));
if (root->rc != NULL) {
root->rc->lc = root->rc->rc = NULL;
}

root->lc = (Node*)malloc(sizeof(Node));
if (root->lc != NULL) {
root->lc->lc = root->lc->rc = NULL;
}
}
int size = 0, height = 0;
query(root, size, height);
cout << size << "\t" << height << endl;
}
``````

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

• 系统已结题 12月8日
• 已采纳回答 11月30日
• 创建了问题 11月24日

悬赏问题

• ¥15 关于#web项目#的问题，请各位专家解答！
• ¥15 vmtools环境不正常
• ¥15 请问如何在Ubuntu系统中安装使用microsoft R open？
• ¥15 jupyter notebook
• ¥30 informer时间序列预测
• ¥20 SSR引物多态性分析
• ¥15 大漠插件在Win11易语言注册调用和免注册灵异事件，VS上注册调用完全没问题