判断一棵树是否对称(C实现)

// Type your C++ code and click the "Run Code" button!

// Your code output will be shown on the left.

// Click on the "Show input" button to enter input data to be read (from stdin).

 

#include <iostream>

using namespace std;

 

typedef int DATA;

 

typedef struct Node

{

    DATA val;

    struct Node *left;

    struct Node *right;

} TNode;

 

bool sym(TNode *l, TNode *r) {

    if(!l && !r) return true;

    if(!l || !r) return false;

    if(l->val != r->val) return false;

    return sym(l->left, r->left) && sym(l->right, r->right);

}

 

bool isSym(TNode *root) {

    if(!root) return true;

    return sym(root->left, root->right);

}

 

int main() {

    

    TNode l = {val:12, left:NULL, right:NULL};

    TNode r = {val:2, left:NULL, right:NULL};

    TNode root = {val:10, left:&l, right:&r};

    

    string result = isSym(&root)? "yes" : "no";

    

    cout << result << endl;

    

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值