精华内容
下载资源
问答
  • 判断两棵树是否相同

    2021-05-01 11:16:23
    判断两棵树是否相同 题目要求: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 (题目来源:力扣) bool ...

    判断两棵树是否相同

    题目要求:
    给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
    (题目来源:力扣)
    在这里插入图片描述
    在这里插入图片描述

    bool isSameTree(struct TreeNode* p, struct TreeNode* q){
        if(p == NULL && q == NULL)
            return true;
        if(p == NULL|| q == NULL)
            return false;
        if(p->val != q->val)
            return false;
        return isSameTree(p->left,q->left)
            && isSameTree(p->right,q->right);
    }
    
    展开全文
  • 判断两棵树是否相等

    2014-06-15 10:27:05
    思路:两棵树相等当且仅当rootA->data == rootB->data,且A和B的左右子树相等或左右子树互换相等 用递归的方式进行求解 (1)if(两棵树都为空)返回true (2)if(两棵树中一棵为空,另一棵不为空)返回false (3)if...


    思路:两棵树相等当且仅当rootA->data == rootB->data,且A和B的左右子树相等或左右子树互换相等
    用递归的方式进行求解
    (1)if(两棵树都为空)返回true
    (2)if(两棵树中一棵为空,另一棵不为空)返回false
    (3)if(数据相等)
    {
    if(两棵树的左子树相等)
    {
    if(两棵树的右子树相等)
    return true;
    }
    else if(第一棵树的左子树与第二棵树的右子树相等)
    if(第一棵树的右子树与第二棵树的左子树相等)
    return true;
    }

    else return false;


    typedef struct Node
    {
    	char data;
    	Node *lChild, *rChild, *parent;
    }BNode, *BTree;
    

    bool compTree(BTree a, BTree b)
    {
    	if(a == NULL && b == NULL)
    		return true;
    	if(a == NULL && b != NULL || a != NULL && b == NULL)
    		return false;
    	if(a->data == b->data)
    	{
    		if(compTree(a->lChild, b->lChild))
    			return compTree(a->rChild, b->rChild))
    		else if(compTree(a->lChild, b->rChild))
    		return compTree(a->rChild, b->lChild);
    	}
    	return false;
    }


    展开全文
  • 递归判断两棵树是否相同

    千次阅读 2017-03-01 13:24:33
    递归写法判断两棵树是否相同:bool flag = true; // 默认认为两棵树是相同的,递归判断过程中改变flag值,一旦有一个不同,就跳出 void judge(node* root1, node* root2) { if(root1 == root2) return; // 这个相等...

    递归写法判断两棵树是否相同:

    bool flag = true; // 默认认为两棵树是相同的,递归判断过程中改变flag值,一旦有一个不同,就跳出
    void judge(node* root1, node* root2)
    {
        if(root1 == root2) return; // 这个相等其实是用来判断都为空的,那么不用改变flag
        if((root1 == NULL && root2 != NULL) || (root2 == NULL && root1 != NULL))
        {
                    // 一棵为空一棵不为空,肯定是不同的
                    flag = false;
            return;
        }
    
        if(root1->data != root2->data)
        {
            flag = false;
            return;
        }
    
        judge(root1->left,root2->left);
        judge(root1->right, root2->right);
    }

    如果将judge函数设为bool,返回true或者false,这样的递归不是很好懂,因为当内层返回true,外层返回false,即使内层break,也只不过往外跳出一层,不能直接回到最最外面。

    这种在外面插个flag的递归写法就比较好懂好写好调试了。

    默认两棵树是相等的,那么,judge函数只干一件事情:碰到两棵树任何不一样的地方就把flag改为false,这样可以保证判断的唯一性。

    展开全文
  • 用C#判断两棵树是否相同 力扣题目: 解题思路在代码中注释 代码实现: /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode ...

    用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) {
            //若p q两个都为空,则返回true
            if(p == null && q == null) return true;
            //若p q中一个为空,一个不为空,返回false
            if(p == null && q != null) return false;
            if(p != null && q == null) return false;
            //返回左右子树是否相等
              if (p.val != q.val)
              return false;
              else
              return IsSameTree(p.left,q.left) && IsSameTree(p.right,q.right);
        }
    }
    

    力扣执行详情:

    在这里插入图片描述

    展开全文
  • 判断一下两棵树是否同时有左右节点,当前节点val是否相同即可 递归写法 /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * ...
  • 给定两棵二叉树,判断两棵树是否相同。 采用先序的方法遍历:public boolean isSameTree(TreeNode p, TreeNode q) { if(p == null || q == null) return p==q; if(p.val == q.val) return isSameTree(p.left, q....
  • 分治算法-判断两棵树是否相同 struct BiNode { int data; BiNode *lchild; BiNode *rchild; }; int Equal(BiNode *T1,BiNode *T2) { if(T1==NULL && T2==NULL) return 1; /** 将该句改为可...
  • //检查两棵树是否相同 //值相同、树的结构相同 public static boolean isSameTree(Node p,Node q){ if(p==null&&q==null){ return true; } if(p==null||q==null){ return false; }
  • LeetCode-判断两棵树是否相同

    千次阅读 2018-10-25 19:52:09
    两颗树的情况可能如下图所示: 1 1 / \ / \ 2 3 2 3 1 1 / \ / \ 2 1 1 2  求解思路:1.先判断两棵树是否为空,如果均为空,那么两棵树肯定...
  • 树---判断两棵树是否相等

    千次阅读 2015-11-02 21:46:17
    问题描述:请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度。 数据结构为:typedef struct TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild; }TreeNode;函数接口为:...
  • 判断两棵树是否一样是看: 1. 它们的当前节点值是否一样 2. 它们的左子树是否一样 3. 它们的右子树是否一样 递归解决
  • LeetCode——same tree 判断两棵树是否相同 题目描述: Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical...
  • 代码实现判断两棵树是否相等

    千次阅读 2014-10-14 14:04:00
    //两棵树是否相等 bool compare(const Node *root1,const Node *root2){ if (root1==NULL&&root2==NULL) { return true; } else if(root1==NULL||root2==NULL) { return false; } if (root1->data!=root...
  • 这里主要是先判断特殊情况:两棵树是否为空,还有他们的节点值是否相等。其次是左右子树是否相等(符合要求) 代码: /* * * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left;...
  • 下面用先根遍历的思路描述算法的步骤: 若两棵二叉树都为空,则两棵...若右子相等,则两棵二叉树相等,返回true。 任何其他情况都返回false 二叉链式存储结构的结点类描述: package tree; public class BiTre...
  • 给定个二叉树,编写一个函数来检验它们是否相同。 如果在结构上相同,并且节点具有相同的值,则认为它们是相同的。 bool isSameTree(struct TreeNode* p, struct TreeNode* q) { if (p==NULL &&...
  • 题目链接:https://leetcode.com/problems/same-tree/#/description /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;... * TreeNod
  • 今天继续刷LeetCode,第21题,判断两棵树是否相等。 分析: 采用递归的方式,通过中序遍历,遍历到二叉树的所有节点,包括叶子节点。然后判断两棵树中对应位置的值是否相等,不相等就返回false,知道所有节点值都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,636
精华内容 21,454
关键字:

判断两棵树是否相等