二叉树小结

二叉树

树的遍历(如何遍历,如何利用特性问题)

前序遍历(中前后)

递归

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();inorder(root, res);return res;}void inorder(TreeNode root, List<Integer> list) {if (root == null) {return;}inorder(root.left, list);list.add(root.val);             // 注意这一句inorder(root.right, list);}
}

迭代

class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();if (root == null) return res;Stack<TreeNode> stack = new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode cur = stack.pop();res.add(cur.val);if(cur.right != null) stack.push(cur.right);if(cur.left != null) stack.push(cur.left);}return res;}}

中序遍历(前中后)

递归

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();inorder(root, res);return res;}void inorder(TreeNode root, List<Integer> list) {if (root == null) {return;}inorder(root.left, list);list.add(root.val);             // 注意这一句inorder(root.right, list);}
}

迭代

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();if (root == null) return res;Stack<TreeNode> stack = new Stack<>();TreeNode cur = root;while(cur != null || !stack.isEmpty()){while(cur != null){stack.push(cur);cur = cur.left;}cur = stack.pop();res.add(cur.val);cur = cur.right;}return res;}}

后序遍历(前后中)

递归

class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();postorder(root, res);return res;}void postorder(TreeNode root, List<Integer> list) {if (root == null) {return;}postorder(root.left, list);postorder(root.right, list);list.add(root.val);             // 注意这一句}
}

迭代

class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();if (root == null) return res;Stack<TreeNode> stack = new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode cur = stack.pop();res.add(cur.val);if(cur.left != null) stack.push(cur.left);if(cur.right != null) stack.push(cur.right);}Collections.reverse(res);return res;}
}

利用遍历的特性

  • 涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。
  • 求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。
  • 求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商系统架构设计系列(八):订单数据越来越多,数据库越来越慢该怎么办?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;订单数据越来越多&#xff0c;数据库越来越慢该怎么办&#xff1f; 今天这篇文章&#xff0c;我们来聊一下如何应对数据的持续增长&#xff0c;特别是像订单数据这种会随着时间一直累积的数据。 引言 为什么数据量越大…

shell从入门到精通(19)特殊变量

​ ​参考:Special Parameters (Bash Reference Manual) (gnu.org) 文章目录 $0$*$@$?变量名称作用$0当前脚本的文件名,不一定是全路径,取决于执行时传入的脚本路径$n叫做位置参数,n≥1 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第…

成考本科和国开本科哪个认可度高些 应该选择哪个

成考本科和国开本科都属于成人教育&#xff0c;两种学历都能为您提供知识、技能和学术背景&#xff0c;为您的职业道路打下坚实的基础。选择哪种学历取决于您的学习兴趣、时间安排和职业目标。 成考本科和国开本科谁认可度高 成人高等教育考试(成考)本科和国家开放大学(国开)本…

jenkins容器内CI/CD 项目失败问题

问题&#xff1a; 在jenkins 的docker容器内CI/CD制作vue项目镜像失败 1、docker权限问题 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs%…

【idea】点击idea启动没反应

RT 点击idea启动的时候没反应&#xff0c;接着百度报错&#xff0c;基本跟他们的也不一样。 首先我是做版本升级。其次&#xff0c;我之前是破解的。如果你也是跟我一样的话&#xff0c;那问题可能就处在破解上了 解决方式 首先&#xff0c;是跟大部分解决思路一样。先找到项…

分清性能测试,负载测试,压力测试这三个的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

C++笔记之单例模式

C笔记之单例模式 参考笔记&#xff1a;C笔记之call_once和once_flag code review 文章目录 C笔记之单例模式1.返回实例引用2.返回实例指针3.单例和智能指针share_ptr结合4.单例和std::call_once结合5.单例和std::call_once、unique_ptr结合 1.返回实例引用 代码 #include <…

ubuntu 如何命令行打开系统设置(Wifi,网络,应用程序...)

关于GNOME GNOME 是一个自由、开放源代码的桌面环境&#xff0c;它运行在 Linux 和其他类 UNIX 操作系统上。它是 GNU 项目的一部分&#xff0c;旨在为 Linux 操作系统提供一个现代化、易于使用的用户界面。 GNOME 桌面环境包括许多应用程序&#xff0c;例如文件管理器、文本编…

Java“牵手拼多多商品详情数据采集方法,拼多多API接口申请指南

拼多多详情接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在电商平台的开发中&#xff0c;详情接口API是非常常用的 API&#xff0c;因此本文将详细介绍详情接口 API 的使用。 一、拼…

前端-NVM,Node.js版本管理

NVM&#xff08;Node Version Manager&#xff09;是一个用于管理Node.js版本的工具&#xff0c;主要用于前端开发中。它允许开发者同时安装和切换不同版本的Node.js&#xff0c;以满足不同项目对Node.js版本的需求。 使用NVM可以带来以下几个好处&#xff1a; 多版本管理&…

侯捷 C++ part2 兼谈对象模型笔记——5 三个C++11新特性

5 三个C11新特性 5.1 variadic templates 模板参数可变化&#xff0c;其语法为 ... (加在哪看情况) // 当参数pack里没有东西了就调用这个基本函数结束输出 void print() { }// 用于打印多个参数的可变参数模板函数 template <typename T, typename... Args> void pri…

SQL Developer中的Data Redaction

SQL Developer中的Data Redaction用起来比命令行方便多了。可以选定表或视图&#xff0c;右键点击“遮盖保护”菜单。 但赋权方面有需要注意的地方。 假设Redact Admin是SYS&#xff0c;Redact User是HR。虽然SYS具备所有权限&#xff0c;但还是报以下错误。其实这个错误是针…

湖南科技学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

湖南科技学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

lua中执行luci.sys.call、luci.sys.exec、os.execute的区别

相同点&#xff1a;都是调用Linux底层脚本及程序 不同点&#xff1a; &#xff08;1&#xff09;luci.sys.call(command) 脾气捉摸不透&#xff0c;实际使用有些时候没有得到任何状态或数据返回&#xff0c;纯粹被用了一下。 &#xff08;2&#xff09;luci.sys.exec(command) …

Chrome浏览器导出插件并安装到其他电脑浏览器上的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Vue 2 与 Vue 3 的全面比较

Vue 2 与 Vue 3 的全面比较 1. 性能提升 Vue 3 的性能得到了显著提升。虚拟 DOM 已经重写&#xff0c;使补丁过程更快。 对比&#xff1a; Vue 3 使用了基于 Proxy 的新观察者机制&#xff0c;取代了 Vue 2 的基于 Object.defineProperty 的观察者。 Object.definePropert…

Python-OpenCV中的图像处理-直方图

Python-OpenCV中的图像处理-直方图 直方图统计直方图绘制直方图Matplotlib绘制灰度直方图Matplotlib绘制RGB直方图 使用掩膜统计直方图直方图均衡化Numpy图像直方图均衡化OpenCV中的直方图均衡化CLAHE 有限对比适应性直方图均衡化 2D直方图OpenCV中的2D直方图Numpy中2D直方图 直…

VSCode使用CMake断点调试

在 VS Code 中使用 CMake 进行断点运行调试&#xff0c;需要进行以下步骤&#xff1a; 确保已在系统中安装了 CMake 和调试器&#xff08;如 GDB&#xff09;。 在项目根目录下创建一个名为 .vscode 的文件夹。 在项目根目录下创建一个名为 build 的文件夹&#xff0c;并在终…

flink读取kafka数据存储iceberg

1、说明 使用flink实时的读取kafka的数据&#xff0c;并且实时的存储到iceberg中。好处是可以一边存数据&#xff0c;一边查询数据。当然使用clickhouse也可以实现数据的既存既取。而hive数据既存既读则会有问题。iceberg中数据读写数据都是从快照中开始的&#xff0c;读和写对…

Tensorrt导出engine文件加密(WindowsC++版)

扯皮的话:为了优化模型的inference,TensorRT会根据网络的定义执行优化包括特定平台的优化并生成inference engine。此过程被称为构建阶段,尤其是在嵌入式平台上会消耗大量的时间,因此,一个典型的应用程序只会被构建一次engine,然后将其序列化为plane file以供后续使用。需…