LeetCode 1104 二叉树寻路[数学 二叉树 位运算] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1104 二叉树寻路[数学 二叉树 位运算] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
解决此题的关键在于观察,首先如果按照正常的排序得到的序列,与之字型序列相比,观察发现,需要查找偶数行某数的路径,其偶数深度路径不变,奇数路径为该行的反向;需要查找奇数行某数的路径,在其奇数深度路径不变,偶数路径为该行的反向。规律找出,直接开整。首先按照获取正常的序列,其次根据其深度的判断,对其不同的奇偶性行进行反向操作,代码如下:

class Solution {
public:
    vector<int> pathInZigZagTree(int label) {
       vector<int> res;
       // 正常序列顺序
       while(label) {
           res.push_back(label);
           label >>= 1;
       }
       // 反向
       reverse(res.begin(), res.end());
       int deep = res.size();
       // 与深度奇偶性不同的取反
       for(int i = 0; i < deep; i ++) {
           if(deep % 2 != i % 2) continue;
           int left = (1 << i);
           // 取对称的数
           res[i] = left * 3 - res[i] - 1;
       }
       return res;
    }
};

以上是关于LeetCode 1104 二叉树寻路[数学 二叉树 位运算] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

数学1104. 二叉树寻路(中等)

力扣1104. 二叉树寻路

LeetCode 1104. 二叉树寻路/103. 二叉树的锯齿形层序遍历/ 171. Excel表列序号/ 987. 二叉树的垂序遍历

1104. 二叉树寻路

1104. 二叉树寻路

满二叉树的性质题--二叉树寻路