当我们要比较大小的时候,最好加上list.get().intValue()102.二叉树的层序遍历 tips:设定一个变化的值为形参的时候,要注意他是否会在循环中被更新
while(!q.isEmpty())
{
//每一层的个数,注意这里
List list1 = new ArrayList();
//注意这里一定要把size先存起来,不然直接把q.size放在for循环里面当判断条件的话他自己会变。。。。
int size = q.size();
for(int i=0; i
下面是错误的写法
while(!q.isEmpty())
{
//每一层的个数,注意这里
List list1 = new ArrayList();
for(int i=0; i
每次for循环中队列q会发生变化,所以q.size()其实是一个变化的值。。
405.删除二叉树中的结点
tips:java是按值传递,所以就会有这样一个现象
分析:
假设我们传入的指针 = 000001,000001里面保存着3
现在把000001传递给remove函数,而函数内部 让这个000001 = null
但是对于整个树来说,它的这个地址仍然是000001,所以这颗树是没有变化的
所以一旦涉及到对引用赋值的代码,一定要慎重考虑哦
public TreeNode deleteNode(TreeNode root, int key) {
//定义一个函数传入root的left指针
remove(root.left);
return root;
//在这个函数里面把left指针 = null,按理说这颗树里面就没有这个结点了啊??
void remove(TreeNode root)
root = null;
}
那么我们应该怎么得到一个删除了这个000001结点的指针呢?
唯一的方法就是不传递,直接把root.left = null
public TreeNode deleteNode(TreeNode root, int key)
//定义一个函数传入root的left指针
root.left = remove(root.left);
return root;
//在这个函数里面把left指针 = null,按理说这颗树里面就没有这个结点了啊??
TreeNode remove(TreeNode root)
root = null;
return root;
它其实等价于直接在原函数中把null赋值非root.left,这样就不涉及传递了呢。
public TreeNode deleteNode(TreeNode root, int key)
//
root.left = null;
return root;



