力扣1104. 二叉树寻路
Posted 海岛树洞OUC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣1104. 二叉树寻路相关的知识,希望对你有一定的参考价值。
1104. 二叉树寻路
29
难度:中等
https://leetcode-cn.com/problems/path-in-zigzag-labelled-binary-tree/
题目
示例
输入:label = 14
输出:[1,3,4,14]
输入:label = 26
输出:[1,2,6,10,26]
提示
1 <= label <= 10^6
题目分析
依照题目不难发现父节点和子节点之间的联系和规律。
思路是第 y 层的第 x 个为 label 的结点,
其父结点必然是位于第 y-1 层的
第 pow(2,y-1)-(x-1)/2 个 为 label-(x+(x-1)/2)的结点
解题
class Solution {
public:
vector<int> pathInZigZagTree(int label) {
int y = 1;//第几层
int x = label;//所在层从小到大 第几个
while( x > pow(2,y-1)){
x -= pow(2,y-1);
y++;
}
vector<int> res;
res.push_back(label);
while(y>1){
y--;
label -=x+(x-1)/2;//计算父结点
x = pow(2,y-1)-(x-1)/2;//计算父结点的位置
res.push_back(label);
}
reverse(res.begin(),res.end());
return res;
}
};
你每日一题了吗?
欢迎指正喔~~
编辑:龚卓然
审核:王泽坤
以上是关于力扣1104. 二叉树寻路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1104. 二叉树寻路/103. 二叉树的锯齿形层序遍历/ 171. Excel表列序号/ 987. 二叉树的垂序遍历