Path In Zigzag Labelled Binary Tree(C++二叉树寻路)
解题思路:
(1)从下往上,除2,注意左右顺序
class Solution {
private:
vector<int> v;
public:
void parent(int label) {
v.insert(v.begin(),label);
int a=log(label)/log(2),b=0;
b=a+1;
if(b%2==0) {
label = pow(2,b)-label-1+pow(2,a);
label = label/2;
} else {
label = label/2;
label = pow(2,a)-1-(label-pow(2,a-1));
}
if(label==1) v.insert(v.begin(),label);
else parent(label);
}
vector<int> pathInZigZagTree(int label) {
if(label==1) return {1};
parent(label);
return v;
}
};
还没有评论,来说两句吧...