c++ 创建二叉树
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <time.h>
struct node
{
long data; //存放数据的一个或者多个项
long count;
struct node *pLeft; //左孩子 指向一个二叉树
struct node *pRight; //右孩子 指向一个二叉树
}; struct node * CreateNode(long value)
{
struct node *p=malloc(sizeof(struct node));
p->pLeft=p->pRight=NULL;
p->data=value;
p->count=1;
}
struct node * AddNode(struct node * pNode,long v)
{
//情况一 pNode==NULL
if (pNode==NULL)
{
return CreateNode(v);
}
// pNode->data=v
if (pNode->data==v)
{
pNode->count++;
return pNode;
}
//v大于结点数据
if (v>pNode->data)
{
if (pNode->pRight==NULL)
{
pNode->pRight=CreateNode(v);
return pNode->pRight;
}else return AddNode(pNode->pRight,v); //递归调用
}
//v小于 结点数据
if (v<pNode->data)
{
if (pNode->pLeft==NULL)
{
pNode->pLeft=CreateNode(v);
return pNode->pLeft;
}else return AddNode(pNode->pLeft,v); //递归调用
} return NULL;
}
int main(void)
{
struct node*root;
long v,i;
printf("请输入二叉树根结点数值:");
scanf("%d",&v);
root=CreateNode(v);
for (i=0;i<=10;i++)
{
AddNode(root,i);
} getchar();
return 0;
}
c++ 创建二叉树的更多相关文章
- 非递归创建二叉树( C++队列 )
非递归按照 层序 创建二叉树,利用 队列(即可先进先出特点)存放已访问的结点元素的地址. 初始化:front=rear= -1: 每储存一个结点元素 rear+1 ,利用 rear%2==0 来使 f ...
- YTU 3025: 创建二叉树
原文链接:https://www.dreamwings.cn/ytu3025/2628.html 3025: 创建二叉树 时间限制: 1 Sec 内存限制: 128 MB 提交: 3 解决: 3 ...
- 创建二叉树,C语言实现
一.前序遍历创建二叉树,使用递归,头文件 BiTree.h /*槽点一:创建树时用scanf输入不成功*/ #ifndef BITREE_H #define BITREE_H #include< ...
- c/c++ 用前序和中序,或者中序和后序,创建二叉树
c/c++ 用前序和中序,或者中序和后序,创建二叉树 用前序和中序创建二叉树 //用没有结束标记的char*, clr为前序,lcr为中序来创建树 //前序的第一个字符一定是root节点,然后去中序字 ...
- c++实现二叉树层序、前序创建二叉树,递归非递归实现二叉树遍历
#include <iostream> #include <cstdio> #include <stdio.h> #include <string> # ...
- java创建二叉树并实现非递归中序遍历二叉树
java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html. 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码 ...
- 递归------python实现列表创建二叉树
# -*- coding:utf-8 -*- '二叉树结点类' class TreeNode: def __init__(self, x): self.val = x self.left = None ...
- 先序遍历创建二叉树,对二叉树统计叶子节点个数和统计深度(创建二叉树时#代表空树,序列不能有误)c语言
#include "stdio.h" #include "string.h" #include "malloc.h" #define NUL ...
- c使用二叉链表创建二叉树遇到的一些疑问和思考
二叉链表存储二叉树 学习的时候参考的是<大话数据结构>,书中是这样定义的 typedef char TElemType; typedef struct BiTNode { TElemTyp ...
- 用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数
本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛斧正 首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可 ...
随机推荐
- sql建JOB语句
declare job_id pls_integer; begin sys.dbms_job.submit(job => job_id, what => 'proc_AGTAWBSTATI ...
- iOS设计模式 - 生成器
iOS设计模式 - 生成器 原理图 说明 1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式 2. 生成器模式适合用于构建组合的对象 源码 https ...
- UIView的无损截图
UIView的无损截图 说明 1. 烂大街的代码 2. 写成category后,方便直接从drawRect中获取绘制出来的图片 3. 可以直接绘制图片供按钮设置背景图片用 4. 无损截图(包括alph ...
- centos安装epel源后,使用报错(Error: Cannot retrieve repository metadata (repomd.xml) for repository: epel. Please verify its path and try again)
报错如下: Error: Cannot retrieve repository metadata (repomd.xml) for repository: epel. Please verify it ...
- Linux 文件特殊权限详解[suid/sgid/t]
setuid(suid): 针对命令和二进制程序的,当普通用户执行某个(passwd)命令的时候,可以拥有这个命令对应用户的权限, 即让普通用户可以以root用户的角色执行程序或命令. setgid( ...
- 详解权限管理(RBAC)的实现方法
在说权限管理前,应该先知道权限管理要有哪些功能: ().用户只能访问,指定的控制器,指定的方法 ().用户可以存在于多个用户组里 ().用户组可以选择,指定的控制器,指定的方法 ().可以添加控制器和 ...
- Xpath注入学习
xpath简介: 提到xpath就要先说下xml,xml意为可扩展标记语言,简单来说就是一种存储数据的标准格式,可以把他视为一个小型的数据库,他可以解决数据在网上传输的标准问题.是一种比数据库更具通用 ...
- Springboot 设置session超时
使用版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...
- ZT 查找字符串中连续最长的数字串
查找字符串中连续最长的数字串 有俩方法,1)比较好理解一些.2)晦涩 1) /* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回, 并把这个最长数字串付给其中一个函数参数outputstr ...
- ubuntu安装pycharm并设置快捷方式
一.tar.gz包安装 从官网下载压缩包 tar zxfv pycharm-professional-2017.3.3.tar.gz cd pycharm-2017.3.3 ./bin/pycharm ...