是不是二叉树?

二叉树是每个节点最多有两个子树的层次结构,现要求实现函数,判断是否为二叉树

函数接口定义:

 

int isTree(TreeNode Head);

Head为要判断的树的头节点,返回1则代表为二叉树,返回0则代表不为二叉树

其中,TreeNode的结构如下

typedef int ElemType;
typedef struct Node {
    ElemType data;
    struct Node *lchild, *rchild;
} *TreeNode;

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;
typedef struct Node {
    ElemType data;
    struct Node *lchild, *rchild;
} *TreeNode;

TreeNode Create();/* 细节在此不表 */

int isTree(TreeNode Head);

int main() {
    TreeNode Head;

    Head = Create();
    if (isTree(Head)) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }

    Head = Create();
    if (isTree(Head)) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

第一行为n,代表有n个节点

接下来n行,每行三个数字,代表numlr,代表节点num的左右子孩子为lr

题目保证节点数据只有整数,无负数和0

7
1 2 0
2 0 3
3 4 0
4 0 5
5 6 0
6 2 7
7 0 0
7
1 2 0
2 0 3
3 4 0
4 0 5
5 6 0
6 0 7
7 0 0

输出样例:

NO
YES
int isTree(TreeNode Head) {
    if(Head==NULL)  return 1;
   if(Head->lchild!=NULL) {
        if(Head->lchild->data<Head->data)  return 0;
    }
    if(Head->rchild!=NULL) {
        if(Head->rchild->data<Head->data) return 0;
    }
    
    return isTree(Head->lchild)*isTree(Head->rchild);
} 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值