• 力扣450 补9.15


    450.删除二叉搜索树中的节点

    可以做,就是去分类讨论,一开始以为有重复节点,感觉挺麻烦的,不过没有重复结点,感觉好做一点了,不过写结点指针赋值的时候把值赋反了,搞得一直报错,还是指针用的不熟练。

    这个中等题大概做了有2个小时,水平大概就这样了,也是慢慢磨把思路磨出来的。

    不过大佬的解法精简的让人称奇,不像我只会暴力,菜狗的我第n次被大佬虐。

     

    class Solution {

        public TreeNode deleteNode(TreeNode root, int key) {

            if(root==null) return null;

            if(root.val==key) {

                if(root.left==null){

                    return root.right;

                }else if(root.right==null){

                    return root.left;

                }else if(root.left!=null&&root.right!=null){

                    TreeNode p=root.left;

                    while(p.right!=null){

                        p=p.right;

                    }

                    p.right=root.right;

                    return root.left;

                }

            }

            dfs(root,key);

            return root;

        }

        void dfs(TreeNode root,int key){

            // 这个解法不够好,如果树里有重复节点就寄了,但对本题有效

            if(root==null) return;

            if(root.left!=null&&root.left.val==key){  

                if(root.left.right!=null) {   

                TreeNode p=root.left.right;

                while(p.left!=null) p=p.left;

                p.left=root.left.left;

                }

                else root.left.right=root.left.left;

                root.left=root.left.right;

            }else if(root.right!=null&&root.right.val==key){

                if(root.right.right!=null){

                TreeNode p=root.right.right;

                while(p.left!=null) p=p.left;

                p.left=root.right.left;

                }

                else root.right.right=root.right.left;

                root.right=root.right.right;

            }

            

            dfs(root.left,key);

            

            dfs(root.right,key);

        }

    }

     

     

  • 相关阅读:
    [计算机网络]HTTP、UDP、TCP协议
    Spring Boot + Netty + WebSocket 实现消息推送
    【C语言】分支结构
    npm install报错 缺少python
    SpringBoot
    Cocos Creator 3.6 新特性详解 2/3:渲染篇
    关于我在uni-app练手中遇到的坑
    2022-11-20 C++并发编程( 四十四 ) -- 通讯顺序进程 CSP 范型
    Flutter动态化开发之Fair实战
    【零基础入门MyBatis系列】第八篇——使用MyBatis的小技巧
  • 原文地址:https://blog.csdn.net/m0_65280246/article/details/132954195