我是靠谱客的博主 害怕黑裤,最近开发中收集的这篇文章主要介绍小黑再一次独立解决leetcode困难,中午没运行出来,晚上在地铁上运行出来的leetcode之旅:87. 二叉树的垂序遍历,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
小黑代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def verticalTraversal(self, root: Optional[TreeNode]) -> List[List[int]]:
# 记录结果输出
items = {}
def dfs(node, pos):
if not node:
return
# 将结果记录
items[pos[1]] = (items.get(pos[1], []))
items[pos[1]].append((node.val, pos[0]))
dfs(node.left, (pos[0] + 1, pos[1] - 1))
dfs(node.right, (pos[0] + 1, pos[1] + 1))
dfs(root, (0, 0))
results = []
# print(items)
for col in sorted(items.keys()):
# print(items[col])
results.append([item[0] for item in sorted(items[col], key = lambda x:(x[1], x[0]))])
return results
自定义排序
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def verticalTraversal(self, root: Optional[TreeNode]) -> List[List[int]]:
nodes = []
def dfs(node, x = 0, y = 0):
if not node:
return
nodes.append((y, x, node.val))
# 递归遍历左右子树
dfs(node.left, x + 1, y - 1)
dfs(node.right, x + 1, y + 1)
dfs(root)
# y变化则装list
last_y = None
arr = []
# 顺序key排序
for y, x, val in sorted(nodes):
if y != last_y:
last_y = y
arr.append([])
arr[-1].append(val)
return arr
小黑生活
肥牛烤串南城香晚饭
看到几年前做按摩拍的照片,虽然快累死人家了,但还是有点儿忍不住想笑
继续哈农学习
早餐牛排元起满满
今天出去跑跑,到望京CBD那里转转
中午继续肥牛烤串
无算法不咖啡
买了实验楼会员课(839rmb),工作做完了抽空看看,区块链基础
偷偷摸摸出去去拿疯狂星期四~看着远处的灯火,有种未来感
看着雪景,准备学琴去啦,初步学习啦怎么发力
第一次地铁里敲代码,记录一下~
希望小黑明天能起来跑个10km吧,期待明天公司团建!
最后
以上就是害怕黑裤为你收集整理的小黑再一次独立解决leetcode困难,中午没运行出来,晚上在地铁上运行出来的leetcode之旅:87. 二叉树的垂序遍历的全部内容,希望文章能够帮你解决小黑再一次独立解决leetcode困难,中午没运行出来,晚上在地铁上运行出来的leetcode之旅:87. 二叉树的垂序遍历所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复