脚本宝典收集整理的这篇文章主要介绍了数据结构与算法(二叉树)~ 介绍二叉树以及力扣上几道二叉树题目的方法和套路,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
数据结构与算法(二叉树)~ 介绍二叉树以及力扣上几道二叉树题目的方法和套路
1,二叉树的数据结构:
(1)基本实现(组成):由一个一个根(或父结点)和左结点、右结点构成。
自己动手实现:定义了一个含有 数据域 和 左结点指针、右结点指针 + (父结点【自己设计就加上,这样方便后续的一些操作】) 的 结点类Node。
(2)二叉树【需要先定义为一颗什么类型的二叉树(这样才能按照一定规则进行结点位置的添加),这里咱设计一棵 二叉搜索树】主要的功能(增删改查):定义一些接口方法
■ 主要的功能(增删改查 + 各种方式的遍历 【前序遍历、中序遍历、后序遍历、层序遍历】+ 前驱结点、后驱结点(针对中序遍历的)+ 树的深度 + 是否为完全二叉树 ):
● 增加:制定一定比较规则(具体实现:【 二叉搜索树中传入一个比较器类对象(属性对象,可以不写,java内置有一个compator 比较器接口 ~ 组合关系)】 /
【让二叉搜索树 继承 比较类(java内置了comparable 接口) ~ 继承关系 / 将对象进行强制类型转化,然后就可以使用相应的接口方法啦,例如以下:~强制类型转化】)
● 删除:先查找到给结点,然后删除结点:删除过程~~~~~
● 查找:查找结点。
● 前序遍历: 根(父) 左子树 右子树 | 根(父) 右子树 左子树 【前序只需满足 根最先访问】
● 中序遍历: 左子树 根(父) 右子树 | 右子树 根(父) 左子树 【中序只需满足 根中间访问】
● 后序遍历: 左子树 右子树 根(父) | 右子树 左子树 根(父) 【后序只需满足 根最后访问】
● 层序遍历: 一层一层的结点从左到右进行访问。
● 前驱结点:中序遍历的前一个结点。
● 后驱结点:后序遍历的后一个结点。
(3)过程中进行重构二叉搜索树,将 增删改查 或者一些通用的接口或者属性封装到外部抽象类或者接口(方便设计给其他类用这样子):
2,二叉树的力扣算法题:
总结一些小套路吧 (没有通用的套路,就讲一下方法哈):
✿ 自己需要先知道的是二叉树的特点就是左右子树(左右结点)构成(一般没有特别强调的二叉树,结点类就是左右子树(结点)(没给父指针结点哈,咱自己设计加的))
(1)101_对称二叉树 的方法 和 套路:
方法一:
方法二:
套路一:
(2)102_二叉树的层序遍历 的方法与套路 :
方法一:
方法二:
套路一:
(3)104_二叉树的最大深度 的方法与套路 :
方法一:
方法二:
套路一:
(4)105_从前序与中序遍历序列构造二叉树 的方法与套路 :
方法一:
方法二:
套路一:
(5)106_从中序与后序遍历序列构造二叉树 的方法与套路 :
方法一:
方法二:
套路一:
(6)107_二叉树的层序遍历II 的方法与套路 :
方法一:
方法二:
套路一:
(7)114_二叉树展开为链表 的方法与套路 :
方法一:
方法二:
套路一:
(8)144_二叉树的前序遍历 的方法与套路 :
方法一:
方法二:
套路一:
(9)145_二叉树的后序遍历 的方法与套路 :
方法一:
方法二:
套路一:
(10)226_翻转二叉树 的方法与套路 :
方法一:
方法二:
套路一:
(11)559_N叉树的最大深度 的方法与套路 :
方法一:
方法二:
套路一:
(12)589_N叉树的前序遍历 的方法与套路 :
方法一:
方法二:
套路一:
(13)590_N叉树的后序遍历 的方法与套路 :
方法一:
方法二:
套路一:
(14)662_二叉树最大宽度 的方法与套路 :
方法一:
方法二:
套路一:
(15)889_根据前序和后序遍历构造二叉树 的方法与套路 :
方法一:
方法二:
套路一:
(16)94_二叉树的中序遍历 的方法与套路 :
方法一:
方法二:
套路一:
以上是脚本宝典为你收集整理的数据结构与算法(二叉树)~ 介绍二叉树以及力扣上几道二叉树题目的方法和套路全部内容,希望文章能够帮你解决数据结构与算法(二叉树)~ 介绍二叉树以及力扣上几道二叉树题目的方法和套路所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。