第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

???3279題解:利用遞歸與深度優(yōu)先搜索計算樹的最大高度(附完整代碼)

標簽:
C++

https://img1.sycdn.imooc.com/c906546808577d3908680869.jpg



一、题目解读

牛客13279题要求计算给定树的最大高度。题目输入一棵以邻接表形式表示的树(节点从0开始编号),需要输出从根节点到最深叶节点的最长路径长度。树的结构由n个节点和n-1条边构成,保证为连通无环图。理解题目核心在于准确获取树的拓扑关系,并设计算法遍历各分支寻找最长路径。

二、解题思路

代码采用递归+深度优先搜索(DFS)策略。主函数通过邻接表构建树结构后,从根节点(索引0)出发递归计算:

1. 对每个子节点递归调用computeHeight(),获取其子树高度;

2. 取所有子树高度的最大值,并加1(当前节点自身高度);

3. 最终返回根节点的高度即为整树最大高度。

此思路利用递归天然适配树结构的特点,简洁高效。

三、解题步骤

步骤1:输入处理与树构建

    读取节点数n,初始化邻接表tree(vector<vector>);

    循环n-1次,输入父节点parent和子节点child,将child加入parent的邻接表列表。

步骤2:递归计算高度

    computeHeight()函数接收树和当前节点node:

    遍历node所有子节点,递归调用自身获取子树高度;

    用max()函数更新当前最高值,最终返回maxHeight+1。

步骤3:主函数输出结果

    调用computeHeight(tree, 0)计算根节点高度并输出。

四、代码和注释

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// 递归计算以node为根的子树高度
int computeHeight(const vector<vector<int>>& tree, int node) {
    int maxHeight = 0;  // 初始化当前子树最大高度为0
    for (int child : tree[node]) {  // 遍历node的所有子节点
        maxHeight = max(maxHeight, computeHeight(tree, child));  // 递归计算子树高度并取最大值
    }
    return maxHeight + 1;  // 当前节点高度=子树最高高度+1
}

int main() {
    ios::sync_with_stdio(false);  // 加快输入/输出速度
    cin.tie(nullptr);            // 取消与cout的同步

    int n;
    cin >> n;                   // 输入节点数
    vector<vector<int>> tree(n);  // 邻接表存储树结构

    for (int i = 0; i < n - 1; ++i) {
        int parent, child;
        cin >> parent >> child;
        tree[parent].push_back(child);  // 构建父节点到子节点的边
    }

    cout << computeHeight(tree, 0) << endl;  // 计算根节点0的高度并输出
    return 0;
}

五、总结

本解法通过递归天然匹配树结构,避免了复杂的层次遍历或栈操作。时间复杂度为O(n),空间复杂度为O(n)(递归栈深度)。适用于中小型树结构高度计算场景。需注意输入数据需严格保证为树,避免环导致递归无限循环。代码简洁性、可读性与效率平衡良好,是解决此类问题的经典范式。

来源:牛客13279题解:利用递归与深度优先搜索计算树的最大高度(附完整代码)


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消