![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树遍历
liubeiandcaocao
这个作者很懒,什么都没留下…
展开
-
108将有序数组转为二叉搜索树(高度平衡搜索二叉树)
首先记起来二叉搜索树的概念,所有左右子树节点,左<中<右。同时要求满足高度差不超过1,则选择中点为根节点。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2020-03-03 10:22:06 · 118 阅读 · 0 评论 -
剑指 Offer 55 - II. 平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树;二叉树中任意节点的左右子树的深度相差不超过1,则是平衡二叉树回顾递归求深度的方案,是先求得左右子树的深度,然后进一步得到当前节点的深度,即先左右子树,再根节点;可以直接加入一个全局变量记录当前是否平衡,并额外引入一个逻辑来比较子树的深度;BFS迭代求深度的算法,是当前节点从上到下所在的层数,每个节点并不知道自己的深度(从下往上,从叶子节点到自身)class Solution: def isBalanced(self, root: TreeNo原创 2020-08-15 10:29:38 · 113 阅读 · 0 评论 -
leetcode(104)二叉树的最大深度 剑指 Offer 55 - I. 二叉树的深度 我可太喜欢BFS遍历的方法了,一定要掌握
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。两种方式:递归求解和非递归(迭代)求解方法一class Solution: def maxDepth(self,root): """ :type root: TreeNode :rtype: int ""...原创 2020-02-29 17:26:15 · 146 阅读 · 0 评论 -
剑指 Offer 54. 二叉搜索树的第k大节点 用到了莫里斯遍历
方法1:二叉搜索树的性质,中序遍历左中右是升序的;使用中序遍历的变形,右中左,则第k个数就是第k大节点class Solution: def kthLargest(self, root: TreeNode, k: int) -> int: res = [] stack =[] while stack or root: while root: stack.append(root)原创 2020-08-14 13:28:21 · 154 阅读 · 0 评论 -
树的遍历总结 DFS+BFS+n叉树的遍历
关于树的遍历,前序,中序,后序,各有3种方法。递归;迭代;莫里斯这里进行总结:①递归总结:递归只需注意一点,函数调用是小括号不是中括号,preorder(root)√ preorder[root]×前序class Solution: def preorderTraversal(self,root): def preorder(node): return [node.val]+preorder(node.left)+preorder(node.right) if n原创 2020-08-13 15:56:49 · 307 阅读 · 0 评论 -
前序中序的莫里斯遍历
记一下这个题解前序中序的莫里斯遍历原创 2020-08-13 12:38:12 · 204 阅读 · 0 评论