当前位置: 首页 > news >正文

5.30 Tree Traversal + Tree manipulation

    1. Binary Tree Preorder Traversal

题目:对一棵二叉树进行前序遍历,并将结果存在一个List 当中
思路:使用递归
细节:
对于递归版本:注意preorderTraversal() function 返回的是一个List, 所以不正直接用 res.add(root.val), preorderTraversal(root.left), preorderTraversal(root.right)来直接遍历
对于非递归版本:使用stack数据结构来辅助遍历,根左右的遍历顺序 对于栈操作需要反向按照根右左的顺序来压入栈

public class Solution {
    public ArrayList<Integer> preorderTraversal(TreeNode root) {
        ArrayList<Integer> result = new ArrayList<Integer>();
        // null or leaf
        if (root == null) {
            return result;
        }

        // Divide
        ArrayList<Integer> left = preorderTraversal(root.left);
        ArrayList<Integer> right = preorderTraversal(root.right);

        // Conquer
        result.add(root.val);
        result.addAll(left);
        result.addAll(right);
        return result;
    }
}
    1. Lowest Common Ancestor of a Binary Tree

LCA
思路: divide and conquer
什么时候返回 root? -> (root == p || root == q)
什么时候返回 left ? -> left != null && right == null
什么时候返回 right ? -> right != null && left == null

    1. Lowest Common Ancestor of a Binary Search Tree
      要利用BST的特性来提高搜索过程的效率

转载于:https://www.cnblogs.com/kong-xy/p/9114651.html

相关文章:

  • 网页视频加速播放
  • 阿里云新一代关系型数据库 PolarDB 剖析
  • 函数模板(四十七)
  • Springboot 整合 dubbo 的一些坑
  • 10 个 Python 初学者必知编码小技巧
  • CentOS7下安装NVIDIA独立显卡驱动出现X service error问题解决方法
  • python爬虫练习--爬取猫眼热映口碑榜
  • Python字符串capitalize center 方法
  • 实验四 shell编程2
  • 接口只用于定义类型(19)
  • 洛谷 P2421 [NOI2002]荒岛野人
  • python第五天学习总结
  • Nginx配置详解
  • ngnix-内网能用,外网不能用
  • 从一到无穷大:科学中的事实和臆测 (G. 伽莫夫 著)
  • $translatePartialLoader加载失败及解决方式
  • “大数据应用场景”之隔壁老王(连载四)
  • 08.Android之View事件问题
  • 2017 年终总结 —— 在路上
  • PHP CLI应用的调试原理
  • Vue.js 移动端适配之 vw 解决方案
  • webpack项目中使用grunt监听文件变动自动打包编译
  • win10下安装mysql5.7
  • 从零搭建Koa2 Server
  • 看域名解析域名安全对SEO的影响
  • 如何使用 JavaScript 解析 URL
  • 思否第一天
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 小程序01:wepy框架整合iview webapp UI
  • 一道闭包题引发的思考
  • Mac 上flink的安装与启动
  • Semaphore
  • Spring第一个helloWorld
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #define
  • #QT(TCP网络编程-服务端)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (Java)【深基9.例1】选举学生会
  • (JS基础)String 类型
  • (二)fiber的基本认识
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)Android布局类型(线性布局LinearLayout)
  • (正则)提取页面里的img标签
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .htaccess配置重写url引擎
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net Stream篇(六)
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .py文件应该怎样打开?