解题思路:
通过二叉树的思想将表展开,首先每个节点的值是由父节点决定的,其次观察可以发现每行奇数位节点的值和父节点相同,那么我们要做的就是找到父节点的值,然后根据当前节点所在行的奇偶性返回值,找父节点通过不断递归实现,代码如下:
class Solution {
public:
int kthGrammar(int n, int k) {
// 最顶点永远是0
if(n == 1 && k == 1) {
return 0;
}
// 找父节点
int a = kthGrammar(n - 1, (k + 1)/ 2);
int b = a ^ 1;
// 奇数位和父节点相同,否则不同
return (k % 2 == 0) ? b : a;
}
};