4-6 Python数据结构常考题之二叉树

Python工程师面试宝典 专栏收录该内容
54 篇文章 0 订阅
一、二叉树

二叉树涉及到递归和指针操作,常结合递归考察
1.二叉树的操作很多可以用递归的方式解决,不了解递归会比较吃力
2.常考题:二叉树的镜像(反转二叉树)
3.常考题:如何层序遍历二叉树(广度优先)

# leetcode 第226号题:反转二叉树
class TreeNode:
	def __init__(self, x):
		self.val = x
		self.left = None
		self.right = None

class Solution:
	def invertTree(self, root):
		if root:
			root.left, root.right = root.right, root.left
			self.invertTree(root.left)
			self.invertTree(root.right)
		return root		

图示分析:
在这里插入图片描述

# leetcode 第106号题目:层序遍历二叉树(广度优先)
class TreeNode:
	def __init__(self, x):
		self.val = x
		self.left = None
		self.right = None

	def levelOrder(self, root):
		if not root:
			return []
		
		res = []
		cur_nodes = [root]
		next_nodes = []
		res.append([i.val for i in cur_nodes])
		while cur_nodes or next_nodes:
			for node in cur_nodes:
				if node.left:
					next_nodes.append(node.left)
				if node.right:
					next_nodes.append(node.right)
			if next_nodes:
				res.append(
					[i.val for i in next_nodes]
				)
	
			cur_nodes = next_nodes
			next_nodes = []
		return res
				

图示分析:
在这里插入图片描述
二叉树变形题:输出左右视角的二叉树结果

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值