LeetCode对称二叉树(Python)——深度、广度优先遍历

题目

LeetCode对称二叉树(Python)——深度、广度优先遍历
LeetCode对称二叉树(Python)——深度、广度优先遍历

解题思路

之前的博客里讲了广度优先遍历,这里实现迭代的思路其实就是广度优先遍历:
LeetCode对称二叉树(Python)——深度、广度优先遍历
LeetCode对称二叉树(Python)——深度、广度优先遍历
LeetCode对称二叉树(Python)——深度、广度优先遍历
核心思想就是保证队列里相邻的两个节点在二叉树上是对称的两个节点。这里我随手画了一张二叉树示意图,展示一下入队的顺序,节点上的数字就代表了入队的顺位:
LeetCode对称二叉树(Python)——深度、广度优先遍历

执行结果为:
LeetCode对称二叉树(Python)——深度、广度优先遍历
但是如何使用迭代去做这道题,我一开始没想通,isSymmetric方法里只传入了一个参数,上哪去找它对称的节点,这怎么迭代.……直到看了官方题解(Java版)之后,直呼大坑:
LeetCode对称二叉树(Python)——深度、广度优先遍历
相当于直接重写了一个方法,然后用新的check方法迭代,坑!

这里的迭代其实也就是深度优先遍历,python实现如下:
LeetCode对称二叉树(Python)——深度、广度优先遍历
执行结果为:

LeetCode对称二叉树(Python)——深度、广度优先遍历