用c语言,编写判断二叉树是否相似的递归算法

在 C 语言中,可以使用递归算法来判断两棵二叉树是否相似。

首先,需要定义一个结构体来表示二叉树的节点,包括节点的值和左右子节点的指针。

struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; };

然后,定义一个递归函数来判断两棵二叉树是否相似。如果两棵二叉树均为空树,则返回真;如果两棵二叉树其中有一棵为空树,则返回假;否则,如果两棵二叉树的根节点的值相等,并且左子树和右子树也相似,则返回真,否则返回假。

bool isSimilar(struct TreeNode *p, struct TreeNode *q) { if (p == NULL && q == NULL) { return true; } if (p == NULL || q == NULL) { return false; } return p->val == q->val && isSimilar(p->left, q->left) && isSimilar(p->right, q->right); }

最后,调用这个函数,传入两棵二叉树的根节点即可判断两棵二叉树是否相似。

bool result = isSimilar(root1, root2);

祝你编程愉快!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值