Day 15 代码随想录 102. 二叉树的层序遍历


102. 二叉树的层序遍历

二叉树的层序遍历
在这里插入图片描述
 这个思想很巧妙,其实就是想输入头结点,看有没有子节点,有子节点就继续循环。

def levelOrder(self, root):
	results=[]
	if not root:#不是直接输出[]
		return results
	from collections import deque
	res=[]
	que = deque([root])#只取根节点
	size = len(que)
	while que:
		for _ in range(size):
			cur=que.popleft
			res.append(cur.val)
			if cur.left:
				que.append(cur.left)#将子节点放入
			if cur.right:
				que.append(cur.right)
		results.append(res)
	return results		

可以写以下这几题:
在这里插入图片描述

199. 二叉树的右视图

二叉树的右视图
在这里插入图片描述
 这题还挺有意思,需要好好揣摩。

class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        from collections import deque
        if not root:
            return []
        que = deque([root])
        res=[]
        while que:
            cur = que[-1]
            res.append(cur.val)
            #size=len(que)
            for _ in range(len(que)):
                cur=que.popleft()
                if cur.left:
                    que.append(cur.left) 
                if cur.right:
                    que.append(cur.right)   
        return res

101. 对称二叉树

对称二叉树
在这里插入图片描述
 这个使用递归,调用另一个函数。使用后序遍历因为中间的节点需要最后处理。具体是用那种遍历方式见文章:二叉树总结

class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        if not root:
            return True
        return self.compare(root.left,root.right)
    def compare(self,left,right):
        if left !=None and right==None: return False
        elif left==None and right!=None:return False
        elif left==None and right==None :return True
        elif left.val!=right.val : return False
        outside=self.compare(left.left,right.right)
        inside=self.compare(left.right,right.left)
        isSame = outside and inside
        return isSame
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值