
算法-二叉树
二叉树相关算法题
Gamble6
Settle down
展开
-
二叉树——初识
链表 ——> 二叉树 ——> 二叉查找树 ——> 平衡二叉树二叉树时间复杂度:O(logn) ,即2^x(树的深度)=N如:21亿点需要查找几次:2^32 = 21亿,查找32次。1、满二叉树2、完全二叉树:设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边。(除最后一层外,为一颗满二叉树)3、二叉排序树(二叉查找树)的定义:某结点左子树的所有结点的值都小于该节点的值且该结点右..原创 2021-06-21 23:44:39 · 4206 阅读 · 0 评论 -
算法-二叉树-递归使用
递归思想:递推:基于上一次进行下一次的执行回溯:遇到终止条件,逐级返回一、求二叉树的最大深度:class Solution: def maxDepth(self , root ): # write code here if not root: return 0 #注意该条件 if not root.left and not root.right: return 1 ml = se原创 2021-05-26 22:49:37 · 128 阅读 · 0 评论 -
算法-二叉树-先序/中序/后序遍历
一、实现二叉树的先序、中序、后序遍历递归实现:class Solution: def threeOrders(self , root ): # write code here preorder, inorder, postorder = [], [], [] def find(root): if not root: return None preorder.append原创 2021-05-26 22:45:21 · 456 阅读 · 0 评论 -
算法-二叉树-重建二叉树
重建二叉树:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。递归解法-python实现:class Solution: # 返回构造的TreeNode根节点 def reConstructBinaryTree(self, pre, tin): # write code...原创 2021-05-26 21:45:45 · 167 阅读 · 0 评论 -
算法-二叉树-层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层序遍历结果:[[3],[9,20],[15,7]]解法一:BFS 广度优先遍历#BFS思想:逐层遍历,每层的节点从左至右的顺序取出def BFS(self, root: TreeNode): if not root: return None ans =原创 2021-05-26 22:25:22 · 187 阅读 · 0 评论 -
算法-二叉树-验证二叉搜索树
题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。解法思路:使用中序遍历,看查找出来的数列是否递原创 2021-05-26 22:03:03 · 222 阅读 · 0 评论