二叉树变量只是一个地址

public static void main(String[] args) {
TreeNode t = new TreeNode(3);
help(t);
System.out.println(t.val);
}
public static void help(TreeNode t)
{
t.val = 6;
}

上边代码通过地址改变了二叉树,输出为6,但是下边代码却只是传入函数的二叉树变量指向了另一个地址,外界的二叉树变量和二叉树的值没有变,输出还是3

public static void main(String[] args) {
TreeNode t = new TreeNode(3);
help(t);
System.out.println(t.val);
}
public static void help(TreeNode t)
{
t = new TreeNode6);
}

所以想改变二叉树,不能改变二叉树变量,而应该通过二叉树变量t调用val,left,right进行赋值,就可以改变,直接改变t只是让t指向另一课树,原本的树没有改变。

下边是答案,思路是先找到节点,再根据节点的不同情况进行操作。

最后的操作很乱,自己都看不下去了,应该递归的改变左右子树,但是眼睛太累了,有空再改吧。

public TreeNode deleteNode(TreeNode root, int key) {
if(root==null) return null;
if(root.val==key)
{
if (root.left==null) return root.right;
if (root.right==null) return root.left;
TreeNode temp = root.right;
while (temp.left!=null) temp = temp.left;
if (root.left.right!=null) temp.left = root.left.right;
root.left.right = root.right;
root.val = root.left.val;
if (root.left.left==null)
{
root.right = root.left.right;
root.left = null;
}
else {
//这里注意,由于两句话都要用到root.left,所以root.left最后再变
root.right = root.left.right;
root.left = root.left.left;
}
}
else
{
if(root.val>key) root.left = deleteNode(root.left,key);
else root.right = deleteNode(root.right,key);
}
return root;
}

最新文章

  1. iOS上new Date出现Invalid Date的问题,
  2. R之data.table -melt/dcast(数据合并和拆分)
  3. Android使用BLE(低功耗蓝牙,Bluetooth Low Energy)
  4. DuiLib(一)——窗口及消息
  5. Csharp 简单操作Word模板文件
  6. 从PHP官网被攻击,到熟悉SSL(安全链路层)
  7. [Usaco 再次除草]
  8. Drupal设置首页默认内容
  9. 客户端 HttpUtils.java
  10. Individual Project复审
  11. Eclipse自定义的透视图如何删除掉?
  12. Consumer
  13. Python数据库连接池实例——PooledDB
  14. {Reship}{Meanshift}Mean Shift Tracking: 2000-2012回顾
  15. window server IIS组建方法
  16. lua基础知识笔记
  17. 分页sql汇总
  18. 第二课2、ROS
  19. Git的使用 强制放弃本地所有修改,获取master中最新版本更新本地
  20. EOJ Monthly 2018.1

热门文章

  1. 自动化运维工具之Puppet常用资源(一)
  2. 【PSMA】Progressive Sample Mining and Representation Learning for One-Shot Re-ID
  3. Python中使用eval执行下面函数的结果怎么是字符串'10020'?
  4. HashMap稍微详细的理解
  5. 小程序setData 修改数组附带索引解决办法
  6. 写给OIer们的一些话(修订版)
  7. 题解-MtOI2019 幽灵乐团
  8. Python3中zipfile模块文件名乱码问题
  9. es6删除指定元素
  10. Docker部署Mysql8.0.20并配置主从复制