h*o
2 楼
看了好久没明白问题,为啥C++可以呢
public static void findKthNode(TreeNode root, int k){
if (root == null)
return ;
findKthNode(root.left, k);
k--;
System.out.println(k);
if (k == 0)
System.out.println(root.val);
findKthNode(root.right, k);
}
public static void findKthNode(TreeNode root, int k){
if (root == null)
return ;
findKthNode(root.left, k);
k--;
System.out.println(k);
if (k == 0)
System.out.println(root.val);
findKthNode(root.right, k);
}
z*0
3 楼
全靠忽悠啊
s*u
5 楼
impossible is nothing as long as you dare
【在 m***a 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: http://cgi.ebay.com/NV5927U-gateway-I5-430-CPU-MS-Office-07-enterprise_W0QQitemZ200436501960QQcmdZViewItemQQptZLaptops_Nov05?hash=item2eaaf24dc8
【在 m***a 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: http://cgi.ebay.com/NV5927U-gateway-I5-430-CPU-MS-Office-07-enterprise_W0QQitemZ200436501960QQcmdZViewItemQQptZLaptops_Nov05?hash=item2eaaf24dc8
c*a
6 楼
make k static, or global scope to the function
d*1
7 楼
正版软件?
盗版的不怕病人升级发现?
盗版的不怕病人升级发现?
c*a
8 楼
or
i think this will work
public static void findKthNode(TreeNode root, int k){
if (root == null)
return ;
findKthNode(root.left, k-1);
System.out.println(k);
if (k == 0)
System.out.println(root.val);
findKthNode(root.right, k-1);
}
i think this will work
public static void findKthNode(TreeNode root, int k){
if (root == null)
return ;
findKthNode(root.left, k-1);
System.out.println(k);
if (k == 0)
System.out.println(root.val);
findKthNode(root.right, k-1);
}
f*t
10 楼
k要传引用,不是值
d*g
17 楼
要传递引用的话貌似可以用int[] k = new int[1]:
public void findKthNode(TreeNode root, int[] k){
if (root == null) return ;
findKthNode(root.left, k);
k[0]--;
if (k[0] == 0)
System.out.println(root.val);
findKthNode(root.right, k);
}
或者可以加一个返回值(现写的,没测过,大家看看对不对):
public int findKthNode(TreeNode root, int k)
{
if(root == null) return k;
int leftK = findKthNode(root.left, k);
--leftK;
if(leftK == 0)
System.out.println(root.val);
int rightK = findKthNode(root.right, leftK);
return rightK;
}
public void findKthNode(TreeNode root, int[] k){
if (root == null) return ;
findKthNode(root.left, k);
k[0]--;
if (k[0] == 0)
System.out.println(root.val);
findKthNode(root.right, k);
}
或者可以加一个返回值(现写的,没测过,大家看看对不对):
public int findKthNode(TreeNode root, int k)
{
if(root == null) return k;
int leftK = findKthNode(root.left, k);
--leftK;
if(leftK == 0)
System.out.println(root.val);
int rightK = findKthNode(root.right, leftK);
return rightK;
}
h*o
18 楼
c*i
19 楼
c++可以, 应该是用了reference吧~
java里可以写个wrapper class, 包上一个int 变量~~
java里可以写个wrapper class, 包上一个int 变量~~
b*g
20 楼
很多树里面遍历、查找、比较的题都能用这个思路
大意就是递归里面传引用
至于具体传的参数,可是是本题一样的一个用于计数的int,也可以是一个指向tree/
node的指针(例如在binary tree里找最大BST)
总之要传引用才行
如果传的是int,那一定要有该参数的数值的改变操作:
可以在函数里加一句i++之类的
也可以在函数递归调用时把i++当做参数传进去
【在 h*********o 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 看了好久没明白问题,为啥C++可以呢
: public static void findKthNode(TreeNode root, int k){
: if (root == null)
: return ;
:
: findKthNode(root.left, k);
:
: k--;
: System.out.println(k);
: if (k == 0)
大意就是递归里面传引用
至于具体传的参数,可是是本题一样的一个用于计数的int,也可以是一个指向tree/
node的指针(例如在binary tree里找最大BST)
总之要传引用才行
如果传的是int,那一定要有该参数的数值的改变操作:
可以在函数里加一句i++之类的
也可以在函数递归调用时把i++当做参数传进去
【在 h*********o 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 看了好久没明白问题,为啥C++可以呢
: public static void findKthNode(TreeNode root, int k){
: if (root == null)
: return ;
:
: findKthNode(root.left, k);
:
: k--;
: System.out.println(k);
: if (k == 0)
相关阅读
Coursera offers Data Science certificate讨论一个很现实的问题面试难道过去工作经验不重要问道算法题请问:邮寄OPT 资料时,需要寄回邮信封吗?面算法用python,有人试过么,感觉怎样?好奇问问pariveda solution这家公司怎样呢/烂校cs master应该来加州吗check time table created in IBM SQL Aginity workbench ? (转载)[BSSD]回国一趟回来做题很难进入状态了,顺便问下那个Merge k SortedG家early offer是怎么样?chrome占用资源越来越严重了。油工 和 油服 的区别是什么?HR约后天谈(follow up)但是没说是不是好消息,是不是没戏了?请教个title选offer的问题SAS job opporturnity是说即使抽签中了h1b,还要再进一步审核确定是否发给? (转载)new grad签约后继续面试的问题。。FB太不象话问一道面试题, 关于算法 (转载)