第100题:相同的树

一. 问题描述

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1:

输入:       1         1

               /         /

             2   3    2   3

        [1,2,3],   [1,2,3]

输出: true

示例 2:

输入:      1          1

          /                 

      2                        2

        [1,2],     [1,null,2]

输出: false

示例 3:

输入:       1         1

               /         /

            2   1     1   2    

        [1,2,1],   [1,1,2]

输出: false

二. 解题思路

本题思路:采用深度优先遍历树,进行比较两个树的每一个节点。

步骤一:将根节点压入栈。

步骤二:从栈中取出一个节点,判断该节点是否有右子树,左子树,如果有将其子树入栈,并判断两个根节点是否相同,相同继续步骤三,不同,返回false.

步骤三:重复步骤二,直到栈为空。

三. 执行结果

执行用时 :1 ms, 在所有 java 提交中击败了47.60%的用户

内存消耗 :34.1 MB, 在所有 java 提交中击败了85.32%的用户

四. Java代码