`
weiqiang.yang
  • 浏览: 156570 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

二叉树插入Demo

阅读更多
今天群上一个人说递归的二叉树插入不知道怎么做,于是我就帮忙写了个简单的demo
// binary_tree.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>

typedef struct node{
	int value;
	node* left;
	node* right;
}node;

/*print the tree left-mid-right order*/
void printTree(node* root){
	if(root == NULL)
		return;
	printTree(root->left);
	printf("%d,",root->value);
	printTree(root->right);
}

/*make node*/
node* makeNode(){
	node* n = (node*) malloc(sizeof(node));
	n->value = 0;
	n->left = NULL;
	n->right = NULL;
	return n;
}

/*to insert a value into the binary tree, return the new root*/
node* insert(node* root, int value){
	if(root == NULL){
		root = makeNode();
		root->value = value;
	}else if(value < root->value){// insert to the left
		root->left = insert(root->left,value);
	}else{// insert to the right
		root->right = insert(root->right,value);
	}
	return root;
}

int main(int argc,char* argv[]){
	node* root = NULL;
	int data[10] = {3,2,1,4,6,8,7,10,9,33};
	for(int i=0;i<10;i++){
		root = insert(root,data[i]);
	}
	printTree(root);
	system("pause");
	return 0;
}

分享到:
评论

相关推荐

    二叉树先序遍历演示demo

    总结来说,"二叉树先序遍历演示demo"是一个适合初学者的实践项目,通过动态生成随机二叉树并进行先序遍历,有助于理解和掌握二叉树的基本概念和操作。对于希望深入学习数据结构和算法的人来说,这是一个很好的起点。

    二叉树demo

    1. **插入操作**:在二叉树中插入一个新节点,通常需要找到适当的位置,这可以通过遍历树来完成。 2. **删除操作**:删除节点时,需要考虑它是否有子节点,单个子节点还是两个子节点,这会影响删除后的树结构。 3. *...

    C++实现的二叉树demo

    在这个"C++实现的二叉树demo"项目中,开发者可能实现了以下关键功能: 1. **创建树**:创建二叉树通常涉及动态分配内存来创建新的节点,并设置其值、左指针和右指针。可能提供了一个函数,接受新节点的值作为参数,...

    二叉树排序算法及demo

    在"BinaryTreeAlgorithm-master"这个压缩包中,可能包含了实现这些功能的源代码,包括二叉树节点的定义、插入操作的实现以及各种遍历方法的代码。通过阅读和理解这些代码,你可以深入学习二叉树排序算法,并将其应用...

    动态平衡二叉树demo

    在这个"动态平衡二叉树demo"项目中,开发者使用C++语言实现了AVL树的数据结构,并且提供了图形用户界面(GUI)以交互方式操作二叉树。以下是该项目包含的关键知识点: 1. **AVL树的定义**:AVL树是二叉搜索树的扩展...

    BinaryTree_demo.zip_DEMO_binary tree_二叉树

    1. 插入节点:找到合适的位置插入新节点,保持二叉树的特性。 2. 删除节点:根据节点是否存在子节点,决定是直接删除还是替换。 3. 查找节点:从根节点开始,根据节点值进行比较,沿着左或右子树路径查找。 4. 遍历...

    java中常见排序的所有demo,包含冒泡,选择,插入,快速,堆,希尔,二叉树等

    3. **插入排序(Insertion Sort)**:插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外...

    demo_通过graphviz绘制二叉树.zip

    《使用Graphviz绘制...同时,Graphviz支持多种输出格式,可以满足在报告、演示文稿或网页中插入二叉树图形的需求。因此,掌握使用Graphviz绘制二叉树的方法,对于提升我们的编程技能和理解数据结构具有积极的作用。

    demo.rar_DEMO

    在IT领域,尤其是在软件开发中,二叉树是一种基本且重要的数据结构。本文将深入探讨Vc++(Visual C++)环境...通过分析和实践"demo.rar_DEMO"中的源码,你可以深入理解二叉树操作的具体步骤,增强对C++语言特性的掌握。

    算法-demo.rar

    在平衡二叉树中,插入、删除和查找操作的时间复杂度可以保持在O(log n)级别,这比普通的非平衡二叉树具有更高的效率。通过演示软件,我们可以观察到在平衡二叉树中插入新节点时,如何通过旋转操作保持树的平衡状态。...

    数据结构演示DEMO

    本资源“数据结构演示DEMO”是一个专为学习数据结构设计的教学工具,它通过可视化的方式帮助用户深入理解各种数据结构及其算法。 在数据结构中,我们通常会遇到以下几种经典类型: 1. **线性结构**:如数组和链表...

    java二叉树常用术语及应用详解.docx

    在上述代码中,`TreeDemo`类展示了如何创建一个简单的二叉树并进行前序遍历。`BinaryTree`类包含了对二叉树的根节点设置、删除节点以及前序、中序和后序遍历的方法。`HeroNode`类代表了树中的节点,包含了一个整型...

    Python-一个Python实现对树操作的demo

    在这个"tree-demo-master"项目中,我们可能找到了一个自定义的树节点类和一些操作树的函数,如插入节点、删除节点、遍历树等。 首先,我们来看树节点类的定义。这个类通常包含两个主要属性:`value`用于存储节点的...

    数据结构课程内的程序demo

    在"算法-demo"这个压缩文件中,很可能是包含了一些常见算法的实现,比如排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)和搜索算法(线性搜索、二分搜索、深度优先搜索、广度优先搜索)。...

    Demo_list.rar_DEMO

    在本示例中,“Demo_list.rar_DEMO”是一个压缩包,包含了一个名为“数据结构示例程序.cpp”的源代码文件,这个文件是用C++编程语言编写的,专门为了演示如何在VC(Visual C++)环境中实现链表这一基础数据结构。...

    常用数据结构(堆栈,队列,列表)JAVA代码

    - Java中的`java.util.List`接口提供了多种实现,如`ArrayList`(基于数组实现,快速访问,慢速插入/删除)和`LinkedList`(基于链表实现,快速插入/删除,慢速访问)。 - 列表操作包括`add()`(在指定位置添加...

    数据结构课件+Demo程序(全)打包

    这个压缩包文件包含“数据结构课件+Demo程序(全)打包”,提供了全面的数据结构学习资源,包括理论讲解和实际操作示例。 1. **三元组转置**:在数据库或数据处理中,三元组通常表示对象之间的关系。转置操作意味着...

    数据结构演示c_demo.zip

    树结构包括二叉树、平衡树(如AVL树、红黑树)、B树等,它们在查找、排序等方面有广泛应用;图结构则用于表示对象之间的复杂关系,如社交网络、交通网络等。 C语言是学习数据结构的经典语言,因为它的底层特性使得...

    Java各种排序算法Demo

    本资料包"Java各种排序算法Demo"聚焦于通过Java代码展示不同的排序算法,旨在帮助开发者理解和应用这些算法。 首先,我们来探讨几种基础的排序算法: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,通过重复...

    数据结构演示c_demo

    在"数据结构演示c_demo"中,你可能会看到这些数据结构的实例代码,包括它们的创建、插入、删除、查找等操作。通过实践这些示例,你可以更深入地理解数据结构的工作原理,并提高C语言编程能力。学习数据结构是提升...

Global site tag (gtag.js) - Google Analytics