在 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);
祝你编程愉快!