当前位置:网站首页>二叉树递归套路总结
二叉树递归套路总结
2022-07-05 22:50:00 【明朗晨光】
之前所有用到二叉树递归套路的时间复杂度都是 O ( N ) O(N) O(N),其中 N N N 是二叉树的节点个数,且都是最优解。
某个节点从左右孩子获取信息,然后整合到该节点,此时的左右孩子已经不需要了,而该节点的父节点也是重复这个过程,整个过程相当于后序遍历,在树上做动态规划,所以叫做树型dp。
这个套路包括两个层次:
思想提醒
目标如何实现:X 为根节点的二叉树如何实现目标?
实现手段:向左右树要信息,列举可能性,这个可能性一定是基于从左右树要来的信息(常数时间内可以得到的),加工出来的同等量级的信息也是常数时间的。
设计信息体,分析可能性,常见的分类是 “与目标 X 有关” 和 “与目标 X 无关”。模板
① 设计Info
信息体;
②process
函数:process
函数一定要返回Info
;遇到空的时候,如果值不好设置就返回空,如果好设置就设置;
③默认先得到左树信息,然后得到右树信息;
④分析完可能性后,把 X 需要的信息都加工出来,这是高度模板化的。
这个套路可以解决绝大多数的二叉树问题尤其是树型dp问题,本质是利用 递归遍历二叉树 的便利性。
整个流程总结如下:
1)假设以 X 节点为根,假设可以向 X 左树和 X 右树要任何信息
2)在上一步的假设下,讨论以 X 为根节点的树,得到答案的可能性(最重要)
3)列出所有可能性后,确定到底需要向左树和右树要什么样的信息
4)把左树信息和右树信息求全集,就是任何一棵子树都需要返回的信息S
5)递归函数都返回S,每一棵子树都这么要求
6)写代码,在代码中考虑如何把左树的信息和右树信息整合出整棵树的信息
边栏推荐
- Selenium+Pytest自动化测试框架实战
- 二叉树(二)——堆的代码实现
- 2022 R2 mobile pressure vessel filling review simulation examination and R2 mobile pressure vessel filling examination questions
- 使用rewrite规则实现将所有到a域名的访问rewrite到b域名
- Yiwen gets rid of the garbage collector
- [speech processing] speech signal denoising and denoising based on Matlab GUI low-pass filter [including Matlab source code 1708]
- Hcip day 12 (BGP black hole, anti ring, configuration)
- 一文搞定class的微观结构和指令
- Business introduction of Zhengda international futures company
- openresty ngx_lua请求响应
猜你喜欢
The method and principle of viewing the last modification time of the web page
Common model making instructions
Ieventsystemhandler event interface
基于STM32的ADC采样序列频谱分析
一文搞定class的微觀結構和指令
Element operation and element waiting in Web Automation
First, redis summarizes the installation types
一文搞定垃圾回收器
Activate function and its gradient
[speech processing] speech signal denoising and denoising based on Matlab GUI low-pass filter [including Matlab source code 1708]
随机推荐
The introduction to go language is very simple: String
How to quickly understand complex businesses and systematically think about problems?
基于STM32的ADC采样序列频谱分析
The method and principle of viewing the last modification time of the web page
Finally understand what dynamic planning is
Overview of Fourier analysis
Ultrasonic sensor flash | LEGO eV3 Teaching
Exponential weighted average and its deviation elimination
一文搞定JVM的内存结构
Three.js-01 入门
513. Find the value in the lower left corner of the tree
TOPSIS code part of good and bad solution distance method
使用rewrite规则实现将所有到a域名的访问rewrite到b域名
fibonacci search
Request preview display of binary data and Base64 format data
audiopolicy
Fix the memory structure of JVM in one article
Metasploit(msf)利用ms17_010(永恒之蓝)出现Encoding::UndefinedConversionError问题
【Note17】PECI(Platform Environment Control Interface)
Alibaba Tianchi SQL training camp task4 learning notes