zoukankan      html  css  js  c++  java
  • [leetCode]669. 修剪二叉搜索树

    在这里插入图片描述

    递归

    class Solution {
        // 1. 确定函数参数以及返回值
        public TreeNode trimBST(TreeNode root, int low, int high) {
            // 2.确定终止条件
            if (root == null) return null;
            // 3. 确定单层递归逻辑
            // 返回下一层合适的节点
            if (root.val < low) return trimBST(root.right, low, high);
            if (root.val > high) return trimBST(root.left, low, high);
    
            // 上一层连接下一层合适节点
            root.left = trimBST(root.left, low, high);
            root.right = trimBST(root.right, low, high);
            return root;
        }
    }
    

    迭代

    class Solution {
        
        public TreeNode trimBST(TreeNode root, int low, int high) {
            if (root == null) return null;
            // 处理头节点将root移动到[L,R]范围内
            while (root.val < low || root.val > high) {
                if (root.val < low) root = root.right;// 小于L向右走
                else root = root.left; // 大于R向左走
            }
            TreeNode cur = root;
            // 此时root已经在[L,R]范围内,处理左孩子小于L的情况
            while (cur != null) {
                while (cur.left != null && cur.left.val < low) {
                    cur.left = cur.left.right;
                }
                cur = cur.left;
            }
            // 处理右孩子大于R的情况
            cur = root;
            while (cur != null) {
                while (cur.right != null && cur.right.val > high) {
                    cur.right = cur.right.left;
                }
                cur = cur.right;
            }
            return root;
        }
    }
    
  • 相关阅读:
    注册表编程初步
    内层位移换算到外层
    运算符重载
    按右手定则求已经知三点的法向量
    链接错误 2001、2019
    UML规则笔记
    关于动态链接库、静态链接库
    05 nfs、rsync、inotify综合案例
    rsync本地同步
    05 NFS基础知识
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859876.html
Copyright © 2011-2022 走看看