力扣二叉树--总结篇(1)

前言

七天写了二十道题,前面感觉不错,后面越来越写不出来,刷题的心境和效果已然发生了变化。写个阶段总结,及时调整。

内容

先是二叉树的遍历

前序,中序,后序,即对应的递归,迭代写法,还有Morris写法  

然后是层序遍历

使用广度优先搜素

然后是翻转,对称,平衡,路径,叶子节点等问题的操作

目前都是离不开递归和迭代的,也可以说深度优先搜索和广度优先搜素

 

递归的时候隐式地维护了一个栈,迭代的时候需要显式地将这个栈模拟出来  

Morris 遍历的核心思想是利用树的大量空闲指针,实现空间开销的极限缩减。

参考文章Morris遍历详解

每次写递归,都按照这三要素来写。

1.确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。

2.确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。

3.确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

二叉树在计算机科学中有着广泛的应用,如表达式求值、编译器设计、数据压缩等。例如,在表达式求值中,可以利用二叉树来表示算术表达式,通过遍历二叉树来实现表达式的计算;在编译器设计中,可以利用二叉树来表示源代码,通过遍历和转换二叉树来实现编译过程;在数据压缩中,可以利用二叉树来表示数据块之间的关系,从而实现数据的压缩和解压。

(我看不懂,但我大为震撼)

最近在写框架也用到了Trie 树实现动态路由(dynamic route)解析,可见真的很重要,好好学吧!

最后

越来越忙了,那就慢慢来吧,放好心态,开启下一阶段!

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

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

相关文章

CDA一级备考思维导图

CDA一级备考思维导图 第一章 数据分析概述与职业操守1、数据分析概念、方法论、角色2、数据分析师职业道德与行为准则3、大数据立法、安全、隐私 CDA一级复习备考资料共计七个章节,如需资料,请留言,概览如下图: 第一章 数据分析…

软件测试没有面试?8类细节让你邀约不断

求职不顺,没有邀约,大概率是你的简历出现了问题。 本篇文章列出高薪简历应该注意的细节,合计36处,涉及简历的八大组成部分。 同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等&#xff0…

Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip

Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip 文章目录 Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip一、more1.1 输出重定向>和>>1.2 输入重定向< 二、 再谈一切皆文件三、less指令【重要】四、head指令五、tail指令…

机器学习【02】在 Pycharm 里使用 Jupyter Notebook

只有 Pycharm 的 Professional 版才支持 Jupyter Notebook 本教程结束只能在pycharm中使用&#xff0c;下载的库在pycharm选中的虚拟环境中 ssh -L localhost:9999:localhost:8888 usernameip这句话每次都要用 准备 1.服务器安装jupyter sudo snap install jupyter2.在 Jup…

运动蓝牙耳机什么牌子好?百元蓝牙运动耳机排行榜

​跑步、骑车、健身等运动时&#xff0c;大家都需要一款专业的运动耳机来陪伴&#xff0c;它不仅可以提供高品质的音乐和佩戴舒适度&#xff0c;还可以帮助你掌握运动状态&#xff0c;让你更加专注和投入。今天我为大家推荐几款备受好评的运动耳机&#xff0c;它们都拥有不错的…

多线程详解(未完结)

文章目录 ⭐️写在前面的话⭐️一、线程简介1.1 进程1.2 线程1.3 多线程和多进程的区别1.4 总结 二、继承实现2.1 继承Thread类例子&#xff1a;网图下载 2.2 实现Runnable接口 (推荐)案例&#xff1a;火车站买票问题案例&#xff1a;龟兔赛跑 2.3 实现Callable接口 (了解即可)…

503. 下一个更大元素 II

503. 下一个更大元素 II 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;错误经验吸取 原题链接&#xff1a; 503. 下一个更大元素 II https://leetcode.cn/problems/next-greater-element-ii/description/ 完成情况&#xff1a; 解题思…

力软vue前端开发:使用params跳转传参404问题解决

问题描述 this.$router.push({ name: page, query: { id: 001 } }) // 根据路由名称 query 的方式跳转传参 使用query传参时&#xff0c;参数会拼接在链接后&#xff0c;点击搜索条件链接参数也还在。用户需要重新进入搜索页面。 所以&#xff0c;使用nameparams进行传参。参…

【探索Linux】—— 强大的命令行工具 P.16(进程信号 —— 信号产生 | 信号发送 | 核心转储)

阅读导航 引言一、概念&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;kill -l命令&#xff08;察看系统定义的信号列表&#xff09; 二、产生信号&#xff08;1&#xff09;通过终端按键产生信号-- 信号产生-- Core Dump&#xff08;核心转储&#xff09; &#…

量子计算的发展

目录 一、量子力学的发展历程二、量子计算的发展历程三、量子计算机的发展历程四、量子信息科学的发展 一、量子力学的发展历程 量子力学是现代物理学的一个基本分支&#xff0c;它的发展始于20世纪初。以下是量子力学发展的几个重要阶段&#xff1a; 普朗克&#xff08;1900&…

分享一个鬼~

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 先看效果&#xff1a; 上源码&#xff1a; import GUI from "https://cdn.jsdelivr.net/npm/lil-gui0.18.2/esm"const canv…

二分查找之红蓝二分查找

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …