# 每日一题C++版（树的高度）

## 树的高度

5

0 1

0 2

1 3

1 4

3

### 代码

```#include <iostream>
#include <list>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int index;
while (cin >> index)
{
list<vector<int>> joint;
list<vector<int>> tree;
for (int i = 0; i < index-1; i++)
{
vector<int> subjoint;
int father, son;
cin >> father >> son;
subjoint.push_back(father);
subjoint.push_back(son);
joint.push_back(subjoint);
if (tree.empty())
{
vector<int> father_t;
father_t.push_back(father);
vector<int> son_t;
son_t.push_back(son);
tree.push_back(father_t);
tree.push_back(son_t);
}
}
while (!joint.empty())
{
for (auto i = joint.cbegin(); i != joint.cend(); )
{
bool add = false;
for (auto m = tree.begin(); m != tree.end(); m++)
{
int father = (*i)[0];
int son = (*i)[1];
auto findfather = find((*m).cbegin(), (*m).cend(), father);
auto findson = find((*m).cbegin(), (*m).cend(), son);
auto lastone = tree.cend();
lastone--;
if (findfather != (*m).cend())
{
if (m == lastone)
{
vector<int> subjoint;
subjoint.push_back(son);
tree.push_back(subjoint);
i = joint.erase(i);
add = true;
break;
}
if (m != lastone)
{
m++;
(*m).push_back(son);
m--;
i = joint.erase(i);
add = true;
break;
}
}
else if (findson != (*m).cend())
{
if (m == tree.begin())
{
vector<int> subjoint;
subjoint.push_back(father);
tree.push_front(subjoint);
i = joint.erase(i);
add = true;
break;
}
if (m == tree.begin())
{
m++;
(*m).push_back(father);
m--;
i = joint.erase(i);
add = true;
break;
}
}
}
if (!add)
{
i++;
}
}
}
cout << tree.size() << endl;
}
return 0;
}```

0 条评论

• ### 每日一题C++版（二叉树的高度）

编程是很多偏计算机、人工智能领域必须掌握的一项技能，此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”，通过每天一道编程题目来强化...

• ### 每日一题C++版（袋鼠过河）

编程是很多偏计算机、人工智能领域必须掌握的一项技能，此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”，通过每天一道编程题目来强化...

• ### 修正！【从零学习OpenCV 4】分割图像——分水岭法

分水岭算法与漫水填充法相似，都是模拟水淹过山地的场景，区别是漫水填充法是从局部某个像素值进行分割，是一种局部分割算法，而分水岭法是从全局出发，需要对全局都进行分...

• ### 【专知-关关的刷题日记19】Leetcode 118. Pascal&#39;s Triangle

题目 Given numRows, generate the first numRows of Pascal's triangle. For example, ...

• ### Leetcode 84 Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the...

• ### 学界 | 传播动态学的主动监控：一种组稀疏贝叶斯学习方法

AI 科技评论按：本文作者吉林大学博士生裴红斌，本文为对他发表在 AAAI 2018 论文的独家解读稿件，未经许可不得转载。 Group Sparse Bay...

• ### hadoop2.7.3源码解析之hdfs删除文件全流程分析h

客户端通过ClientProtocol.delete(String, boolean)方法来删除文件,最终实现是NameNodeRpcServer.delete...

• ### 别走！这里有个笔记：图文讲解 AQS ，一起看看 AQS 的源码……(图文较长)

" AbstractQueuedSynchronizer 抽象队列同步器，简称 AQS 。是在 JUC 包下面一个非常重要的基础组件，JUC 包下面的并发锁 R...