• [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;
        }
    }
    
  • 相关阅读:
    Error in as.POSIXlt.character(x, tz, ...) :
    java.util.ResourceBundle使用详解
    互联网网站的反爬虫策略浅析
    基于内容的图片检索CBIR(Content Based Image Retrieval)简介
    solr
    ETL
    cv 论文(CNN相关)
    输出字符串
    Minimum_Window_Substring两种方法求解
    C++primer中的TextQuery(读取文本)
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859876.html
Copyright © 2020-2023  润新知