• 二叉树删除结点思路分析及代码实现


    二叉树删除结点

    思路分析

    完成删除的操作

    规定:

    1. 如果删除的结点是叶子节点,则删除该节点
    2. 如果删除的结点是非叶子节点,则删除该子树

    思路:

    1. 因为我们的二叉树是单向的,所以我们是判断当前结点的子结点是否需要删除结点,而不能去判断当前这个结点是不是需要删除结点
    2. 如果当前结点的左子结点不为空,并且左子结点就是要删除结点,就将this.left=null;并且就返回(结束递归删除)
    3. 如果当前结点的右子结点不为空,并且右子结点就是要删除结点,就将this.right=null;并且就返回(结束递归删除)
    4. 如果第2和第3步没有删除结点,那么我们就需要向左子树进行递归删除
    5. 如果第4步也没有删除结点,则应当向右子树进行递归删除。
    6. 如果考虑树是空树root,如果只有一个root结点,则等价将二叉树置空

    代码实现

    删除方法delNode(int no):

    // 递归删除结点
    	// 1. 如果删除的结点是叶子节点,则删除该节点
    	// 2. 如果删除的结点是非叶子节点,则删除该子树
    	public void delNode(int no) {
    		// 思路:
    		// 1. 因为我们的二叉树是单向的,所以我们是判断当前结点的子结点是否需要删除结点,而不能去判断当前这个结点是不是需要删除结点
    		// 2. 如果当前结点的左子结点不为空,并且左子结点就是要删除结点,就将this.left=null;并且就返回(结束递归删除)
    		// 3. 如果当前结点的右子结点不为空,并且右子结点就是要删除结点,就将this.right=null;并且就返回(结束递归删除)
    		// 4. 如果第2和第3步没有删除结点,那么我们就需要向左子树进行递归删除
    		// 5. 如果第4步也没有删除结点,则应当向右子树进行递归删除。
    		// 6. 如果考虑树是空树root,如果只有一个root结点,则等价将二叉树置空
    		// 2. 如果当前结点的左子结点不为空,并且左子结点就是要删除结点,就将this.left=null;并且就返回(结束递归删除)
    		if (this.left != null && this.left.no == no) {
    			this.left = null;
    			return;
    		}
    		// 3. 如果当前结点的右子结点不为空,并且右子结点就是要删除结点,就将this.right=null;并且就返回(结束递归删除)
    		if (this.right != null && this.right.no == no) {
    			this.right = null;
    			return;
    		}
    		// 4.先左子树进行递归删除
    		if (this.left != null) {
    			this.left.delNode(no);
    		//	return
    		}
    		// 5.向右子树递归删除
    		if (this.right != null) {
    			this.right.delNode(no);
    		}
    	}
    

    delNode(int no)方法的实现:

    //删除结点
    	public void delNode(int no) {
    		if (root!=null) {
    			//如果只有一个root结点,立即判断root是不是要删除的结点
    			if(root.getNo()==no) {
    				root=null;
    			}else {
    				//递归删除
    				root.delNode(no);
    			}
    		}else {
    			System.out.println("空树,不能删除");
    		}
    	}
    
  • 相关阅读:
    接口调试之Postman 使用方法详解
    用Vue2仿京东省市区三级联动效果
    高德地图JS API获取经纬度,根据经纬度获取城市
    js 格式化数字,格式化金额:
    CSS Media媒体查询使用大全,完整媒体查询总结
    最新手机号正则表达式 java 、javascript版正则表达式验证是否为11位有效手机号码
    JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决
    在上线项目中,用Vue写一个星级评价
    new Date()设置日期在IOS的兼容问题
    javascript 省市区三级联动 附: json数据
  • 原文地址:https://www.cnblogs.com/etoumao/p/12185747.html
Copyright © 2020-2023  润新知