Algorithm 如何检查二叉树的结构(不是值)是否具有镜像对称性

Algorithm 如何检查二叉树的结构(不是值)是否具有镜像对称性,algorithm,data-structures,binary-tree,mirror,symmetric,Algorithm,Data Structures,Binary Tree,Mirror,Symmetric,我被要求编写一个递归算法来检查二叉树的结构(不是值)是否具有镜像对称性。例如: 1 / \ / \ / \ 3 5 / \ / \ 7 9 11 13 / \ 15 17 具有对称结构。我希望有一位专家能帮助我。提前谢谢。 我知道如何检查值是否对称,但不是实际结构。假设您有一个带有left和right属性的类节点,所需函数在Python中可能如下所示:

我被要求编写一个递归算法来检查二叉树的结构(不是值)是否具有镜像对称性。例如:

        1
       / \
      /   \
     /     \
     3      5
    / \    / \
    7  9  11 13
       /   \
      15   17
具有对称结构。我希望有一位专家能帮助我。提前谢谢。
我知道如何检查值是否对称,但不是实际结构。

假设您有一个带有
left
right
属性的类
节点
,所需函数在Python中可能如下所示:

def是镜像(左、右):
如果左为无或右为无:#其中一个为无
返回left==right#当两者均为无时为True
返回is_镜像(左、左、右、右)和is_镜像(左、右、右、左)
你可以这样称呼它:

#根据问题创建示例树:
树=节点(1,
节点(3,
节点(7),
节点(9,
节点(15)
)
),
节点(5,
节点(11,
没有一个
节点(17)
),
节点(13)
)
)
打印(是否为镜像(tree.left,tree.right))#正确

这不仅仅是跟踪左和右的问题吗?一种方法是递归函数,其签名为
bool isMirrored(struct node*left,struct node*right)
,称为
bool result=isMirrored(root->left,root->right)总体思路是一个双DFS,它同时遍历左、右子树。您尝试过什么?添加当前方法/代码如果您知道如何检查值是否对称,只需假设每个节点上的值都为零并进行检查