Task19——相同的树

news/2024/7/5 3:16:37

题目:

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

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

示例 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

解题:

C语言

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


bool isSameTree(struct TreeNode* p, struct TreeNode* q){    
    if (p != 0 && q != 0)
    {
        if (p->val != q->val) return false;
        if (!isSameTree(p->left, q->left)) return false;
        if (!isSameTree(p->right, q->right)) return false;
        return true;
    }
    else if (p == 0 && q == 0)
    {
        return true;
    }
    return false;
}

 C#语言一

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public bool IsSameTree(TreeNode p, TreeNode q) {
            if(p!=null && q != null)    
            {
                if (p.val != q.val) return false;
                if (!IsSameTree(p.left, q.left)) return false;
                if (!IsSameTree(p.right, q.right)) return false;
                return true;
            }
            else if (p == null && q == null)
            {
                return true;
            }
            return false;
    }
}

C#语言二

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
        List<int?> t1 = new List<int?>();
        List<int?> t2 = new List<int?>();
        public bool IsSameTree(TreeNode p, TreeNode q)
        {
            PreOrderTraverse(p);
            PreOrderTraverse2(q);
            if (t1.Count != t2.Count) return false;
            for(int i = 0; i < t1.Count; i++)
            {
                if (t1[i] != t2[i]) return false;
            }
            return true;
        }
        void PreOrderTraverse(TreeNode t)
        {
            if (t != null)
            {
                t1.Add(t.val);
                PreOrderTraverse(t.left);
                PreOrderTraverse(t.right);
            }
            t1.Add(null);
        }
        void PreOrderTraverse2(TreeNode t)
        {
            if (t != null)
            {
                t2.Add(t.val);
                PreOrderTraverse2(t.left);
                PreOrderTraverse2(t.right);
            }
            t2.Add(null);
        }
}

 


http://www.niftyadmin.cn/n/1990981.html

相关文章

C/C++圣战 李维

C/C圣战 李维 Borland C/C的反击 当Microsoft Visual C 1.0 在C/C开发工具市场获得了空前成果的之后&#xff0c;Borland 才从Borland C/C 3.1的胜利梦中惊醒&#xff0c;思考如何面对Visual C的猛烈功势。事实上当时的Borland如果脑袋清醒一点&#xff0c;好好看清当时C/C开发…

深入浅析:面向对象编程四大原则

http://www.csai.cn 作者&#xff1a;佚名 来源&#xff1a;网络 2008年5月5日  进入社区   在面向对象设计中&#xff0c;如何通过很小的设计改变就可以应对设计需求的变化&#xff0c;这是令设计者极为关注的问题。为此不少OO先驱提出了很多有关面向对象的设计原则用于…

Task20——对称二叉树

题目&#xff1a; 给定一个二叉树&#xff0c;检查它是否是镜像对称的。 例如&#xff0c;二叉树 [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说明: 如果你可以运用递归和迭代两种方…

Task21——二叉树的最大深度

题目&#xff1a; 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 3 / \ 9 20 / \ 15 …

简单而复杂的smarty循环问题

简单而复杂的smarty循环问题 问:$mySmarty->assign(sCount, 20); $mySmarty->display(xxx.tpl); 我想要的很简单&#xff0c;就是能在xxx.tpl中循环$sCount变量&#xff0c;就像类似于下面的PHP循环形式&#xff1a; for ($i 0; $i < $sCount; $i) { ...... } 每个语…

系统API RFile::Seek的BUG

TInt RFile::Seek(TSeek aMode,TInt& aPos) const函数&#xff0c;当输入参数aPos超过文件范围时&#xff0c;函数不会返回错误值。我在CFileSource类里面实现了这样一个函数 TInt CFileSource::DoSeek(TInt aPos) { TInt err iRFile.Seek(ESeekStart, aPos); …

Task22——二叉树的中序遍历

题目&#xff1a; 给定一个二叉树&#xff0c;返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单&#xff0c;你可以通过迭代算法完成吗&#xff1f; 解题&#xff1a; 递归算法 /*** Definition for a …