zoukankan      html  css  js  c++  java
  • [leetcode]1104. Path In Zigzag Labelled Binary Tree

    因为不管是奇数行还是偶数行,该行与上一行的方向都是反着来的

    可以先求出顺着来时这个结点对应的父结点,再求出对应父结点在它所在行对称的结点

    这里有个求对称的方法:按顺序排列且每个数都能找到对称数的一系列数,每一对对陈数的和都相同,所以求某个数的在某一行的对称数,只用找出这一行两端的数,求出和,再减去这个数就能得到这个数的对称数

    所以只用从传进来的这个结点递归,每次递归求出自己对应的父结点,递归到1时结束,每次递归记录一次当前结点的号码

    最后得到的一系列结点号码就是路径

    class Solution {
    public:
        vector<int> res;
        vector<int> pathInZigZagTree(int label) {
            helper(label);
            return res;
        }
        
        void helper(int label){
            int level;
            int lastMin;
            if(label == 1)
                res.insert(res.begin(), label);
            else{
                res.insert(res.begin(), label);
                level = (int)(log(label)/log(2));   //上一层的层数
                lastMin = pow(2, level)/2;          //上一层最小的数
                
                helper( lastMin + (lastMin*2)-1 - label/2 );
            }
        }
    };
  • 相关阅读:
    SHELL[22]
    SHELL[15]
    SHELL[08]
    SHELL[12]
    SHELL[06]
    SHELL[24]
    SHELL[11]
    shell文件合并、去重
    SHELL[25]
    SHELL[14]
  • 原文地址:https://www.cnblogs.com/ssNiper/p/11208258.html
Copyright © 2011-2022 走看看