网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在关系型数据库(如Mysql)中,通常会采用B+树作为索引结构。B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。
🍒2.3.3 决策树
在机器学习领域,决策树是一个非常经典的算法。决策树是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。
由于这种决策分支画成图形很像一棵树的枝干,故称决策树。
🎄🎄🎄我是分割线🎄🎄🎄
🍓3 二叉树的定义
🍊3.1 二叉树的定义
二叉树(Binary tree)是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。
在下面这副图中,F就是这棵二叉树的根节点,其左、右孩子节点分别为C、E。
🍊3.2 二叉树类
借鉴力扣中二叉树类的定义:
class TreeNode: def __init__(self,val,left=None,right=None): self.val=val self.left=left self.right=right
🍊3.3 构造方法
在python中,可以采用递归构造方法快速构造一颗二叉树
"""tree 5 1 2 3 4 6 8 9 11 """ # 推荐采用这种构造方式,非常直观 root=TreeNode(5, TreeNode(1, TreeNode(3, TreeNode(9), None), TreeNode(4) ), TreeNode(2, TreeNode(6), TreeNode(8, None, TreeNode(11)) ) )
🎄🎄🎄我是分割线🎄🎄🎄
🍓4 二叉树的前序遍历
# 递归解法 def preorder(root): if not root:return print(root.val) preorder(root.left) preorder(root.right)
注意观察res的变化状况与树的遍历过程!
🎄🎄🎄我是分割线🎄🎄🎄
🍓5 二叉树的中序遍历
# 递归解法 def inorder(root): if not root:return inorder(root.left) print(root.val) inorder(root.right)
注意观察res的变化状况与树的遍历过程!
🎄🎄🎄我是分割线🎄🎄🎄
🍓6 二叉树的后序遍历
# 递归解法 def postorder(root): if not root:return postorder(root.left) postorder(root.right) print(root.val)
注意观察res的变化状况与树的遍历过程!
🎄🎄🎄我是分割线🎄🎄🎄
🍓7 前、中、后序遍历总结
前序、中序、后序遍历其实都是深度优先思想的体现,我这里采用递归写法,便于记忆,三者的区别在于:遍历左右子树与对此节点做出操作(
print(root.val)
)的顺序对比三种算法,大家可以很清晰地找到他们唯一的不同点:print()函数与两个递归的先后执行顺序。
总结以下,可以发现
(大家可以通过点击tag进入力扣练习题目哦~)
🎄🎄🎄我是分割线🎄🎄🎄
🍓8 BFS:二叉树的层序遍历
def bfs(root): queue=[root] while queue: node=queue.pop(0) if node.left: queue.append(node.left) if node.right: queue.append(node.right) print(node.val)
层次遍历很好理解,就是从根节点开始,一层一层,从上到下,每层从左到右,依次写值就可以了
🎄🎄🎄我是分割线🎄🎄🎄
🍓9 DFS:深度优先搜索
def dfs(root): stack=[root] while stack: node=stack.pop() if node.right: stack.append(node.right) if node.left: stack.append(node.left) print(node.val)
DFS与BFS类似,只不过是用栈而不是队列进行辅助
注意深度优先的栈的先入后出特性,应先判断right再判断left
🎄🎄🎄我是分割线🎄🎄🎄
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
是分割线🎄🎄🎄
[外链图片转存中…(img-GydYMih7-1715703310732)]
[外链图片转存中…(img-E0hxj924-1715703310732)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!