vlambda博客
学习文章列表

【每日编程-77期】对称二叉树

今日问题:

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    1

   / \

  2   2

 / \ / \

3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

    1

   / \

  2   2

   \   \

   3    3

说明:

如果你可以运用递归和迭代两种方法解决这个问题,会很加分。


解决方法:

算法关键:root1和root2的匹配顺序应该是:

(1) root1和root2进行匹配,若都为空,则相似,返回true

若任意一个空,另一个非空,返回false。

(2) 若root1和root2两者都非空,则递归root1->left和root2->right进行匹配&&root1->right和root2->left进行匹配。

即:根->左->右  和  根->右->左

C++代码:


C代码:


Java代码:



明日题目预告:

二叉树的最小深度

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回它的最小深度  2.

 





更多编程题。

请至首页->每日系列->每日编程