松鼠霖
松鼠霖
全部文章
分类
题解(48)
归档
标签
去牛客网
登录
/
注册
松鼠霖的博客
全部文章
(共11篇)
题解 | #完全二叉树结点数#
第一反应是没读懂题,因为会想到不是从上到下,从左到右遍历所有节点,save在list里,再用len()计算长度即可如下(但是时间复杂度貌似不符合): # class TreeNode: # def __init__(self, x): # self.val = x # ...
二叉树
数学逻辑
2021-09-26
0
311
题解 | #实现二叉树先序,中序和后序遍历#
通过遍历的方式,分别建立 firstSearch() midSearch() lastSearch()来遍历二叉树收集前序,中序,后续, 然后在主函数里面append到一起 # class TreeNode: # def __init__(self, x): # se...
Python3
二叉树
遍历
2021-09-23
0
343
题解 | #对称的二叉树#
对称二叉树的本质首先搞清楚,分三种情况 1.在第二层:pRoot.left = pRoot.right 2.在第三层开始,root1.left == root2.right, root1.right == root2.left # -*- coding:utf-8 -*- # class...
二叉树
递归
2021-09-21
0
281
题解 | #从上往下打印二叉树#
就很简单的想到打印二叉树,然后然后需要两个list, res和queue,一个用来迭代,一个用来保存结果,注意,queue保存的是节点 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # s...
二叉树
遍历
顺序
2021-09-20
0
324
题解 | #把二叉树打印成多行#
这道题就非常有意思了,看起来和之前遇到过一个“之”字输出二叉树很相似,但是注意输出格式要是[[8],[6,10],[5,7,9,11]]而不是[[8],[6],[10],[5],[7],[9],[11]] class Solution: # 返回二维列表[[...
二叉树
pop()
ListNode
链表
2021-09-08
0
280
题解 | #二叉树的下一个结点#
仔细观察,可以把中序(DBHEIAFCG)下一结点归为几种类型: 1、有右子树,下一结点是右子树中的最左结点,例如 B,下一结点是 H 2、无右子树,且结点是该结点父结点的左子树,则下一结点是该结点的父结点,例如 H,下一结点是 E 3、无右子树,且结点是该结点父结点的右子树,则一直沿着父结点追朔,...
ListNode
遍历
数学逻辑
链表
二叉树
2021-09-08
0
264
题解 | #二叉搜索树的第k个结点#
第一想法很简单,就是学习前面“之”字型的方式,用一个 stack[] 把所有二叉树的Node按顺序从左到右收集起来,然后保存在,每次pop()一个node保存在res[]里,然后遍历res[]得到node的value值保存在res_value[]里, 然后使用sort()排序,最后返回指定第K...
二叉树
sort()
遍历
顺序
TreeNode
pop()
2021-09-02
0
316
题解 | #按之字形顺序打印二叉树#
一旦看到这种有关顺序的,第一个就要想到用栈或队列实现,有这个思路才能进一步实现、优化。 比如这道题,要求 “第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印”,显然,如果能直接利用栈或队列的特性,就能实现题目要求的各种顺序了。 算法流程: ...
栈
队列
顺序
二叉树
TreeNode
2021-09-01
0
258
题解 | #平衡二叉树#
想到要涉及到树的deepth,立刻想到了上一节做过的计算树的最大深度的函数 return max(self.depth(pRoot.left), self.depth(pRoot.right)) + 1, 此刻可以调用 算法流程: 通过比较每个节点的左右子树的最大高度差, ...
二叉树
深度
递归
2021-08-30
0
253
题解 | #二叉树的深度#
算法流程: 本质上是对树作后序遍历 每次递归每个节点 root 的左右子树,并且只得到左右子树中较大的子树深度。 当前节点 root 左右子树递归到叶子节点后,root == null,递归开始自底...
二叉树
递归
2021-08-30
0
274
首页
上一页
1
2
下一页
末页