`
weihe6666
  • 浏览: 437177 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

递归--二叉树

阅读更多
递归--二叉树


//======================================//
//程序名称:利用递归建立二叉树          //
//Written By HEWEI                      //
//2011 05 31                            //
//======================================//
#include<iostream>
using namespace std;

#define  MAX 20
//链表结构的声明
struct tree
{
	struct tree *left;
	int Data;
	struct tree *right;
};
typedef struct tree treenode;
typedef treenode *b_tree;

int capacity;
//---------------------------------------//
//---------建立二叉树--------------------//
//---------------------------------------//
b_tree Create_Tree(int *nodelist,int position)
{
	b_tree New;  //建立新的节点

	//递归的条件 
    if(position > capacity -1 )
		return NULL;
	else
	{
		//申请内存空间
		New = new treenode[sizeof(treenode)];
      //存入节点值
		New->Data = nodelist[position];
		New->left = Create_Tree(nodelist,2*position); //左树节点
		New->right = Create_Tree(nodelist,2*position + 1); //右树节点
        return New;
	}
}

//-------------------------------------------//
//--------前序遍历二叉树---------------------//
//-------------------------------------------//
void preorder(b_tree pointer)
{
	if(pointer != NULL)  
	{  
		cout <<pointer->Data << " ";  
		preorder(pointer->left);//打印左节点  
		preorder(pointer->right);//打印右节点  
	} 
}

//-------------------------------------------//  
//-----------存储数值------------------------//  
//-------------------------------------------//  
void Store_Data(int nMaxIndex,int *pArray)  
{  
	int i ;  
	int temp;  
	for(i = 0; i <nMaxIndex; i++)  
	{  
		cout << "Please Input the Data => ";  
		cin >> temp;  
		pArray[i] = temp;  
	}  
}  

//-------------------------------------------//
//------------主函数-------------------------//
//-------------------------------------------//
int main(void)
{
	b_tree root = NULL; //声明根节点  
	int i,index;  
	int value;  
	int nodelist[MAX];  

	//读取数值到数组中  
	cout <<"Please Input the capacity : ";  
	cin >> capacity;  
	cout << endl;  
	Store_Data(capacity,nodelist);  
	//建立二叉树  
	root = Create_Tree(nodelist,1);  
	//遍历二叉树  
	preorder(root);  
	return 0;
}
分享到:
评论

相关推荐

    二叉树非递归遍历-二叉树非递归遍历-二叉树非递归遍历-二叉树非递归遍历

    /*********************************************************** ***********************************************************/ #include #include #include #define MS 50 struct BTreeNode ...

    qingq0825#Javabook-Interview#算法-二叉树-递归-二叉树反转1

    原二叉树:反转后的二叉树:TreeNode temp = root.left;欢迎光临我的博客,发现更多技术资源~

    数据结构-二叉树递归-非递归实现

    数据结构实验二叉树用递归实现先序遍历、中序遍历和后序遍历,用几种不同非递归方法实现了中序遍历,代码附有详细注释

    汉诺塔非递归-二叉树法

    利用二叉树法,实现汉诺塔的非递归,根据盘子数和第几步,快速得到每一步移动的操作,速度快,省内存。已经经过调试运行,算法思想参见http://wenku.baidu.com/view/81a05a80e53a580216fcfeba.html,本人源码是根据...

    二叉树的各种遍历

    /*选择二叉链式存储结构作为二叉树的存储结构,设计一个程序实现二叉树的基本操作(包括建立、输出、前序遍历、中序遍历、后序遍历、求树高、统计叶子总数等) 【实验内容】 必做内容 程序的菜单功能项如下: 1----...

    递归-----动态树实现递归

    递归实现这些遍历策略非常直观,因为每个节点的处理逻辑几乎相同,即调用自身来遍历左子树和右子树(对于二叉树)或所有子树(对于多叉树)。 - **前序遍历**:先访问根节点,然后递归遍历左子树,最后遍历右子树...

    二叉树的操作--递归非递归遍历、结点个数、树深度

    先序递归遍历二叉树: a b c 先序非递归遍历二叉树: a b c 中序递归遍历二叉树: b a c 中序非递归遍历二叉树: b a c 后序递归遍历二叉树: b c a 后序非递归遍历二叉树: b c a 二叉树的深度是2 二叉树的结点个数...

    二叉树递归与非递归遍历

    递归遍历的优点在于其代码简洁明了,但缺点是当处理大规模的二叉树时,递归可能会导致栈溢出,因为每次递归调用都会增加栈的深度。 **非递归遍历** 1. **前序遍历**: - 使用一个栈来保存待访问的节点。 - 将根...

    二叉树递归和非递归遍历以及层次构建节点数为n的二叉树

    二叉树深度 二叉树前序遍历 递归实现 二种非递归实现 二叉树中序遍历: 递归实现 非递归实现 二叉树后序遍历: 递归实现 非递归实现 二叉树层次遍历 二叉树层次创建,创建方法遵循卡特兰数 ...

    二维矩形装箱算法--二叉树--java实现.rar

    如果当前节点无法容纳,就递归地搜索其子节点。在找到合适的位置后,将矩形插入并更新二叉树结构。 4. 更新树结构:当矩形插入后,可能需要调整周围矩形的位置或分割现有矩形以适应新的空间划分,这会导致二叉树结构...

    数据结构二叉树遍历递归,非递归

    在本主题中,我们将深入探讨二叉树的三种主要遍历方法:中序遍历、前序遍历和后序遍历,以及如何通过递归和非递归的方式实现这些遍历。 首先,让我们理解递归遍历的概念。递归是一种解决问题的方法,它将问题分解为...

    用栈实现二叉树(c++源码)

    1---建立二叉树 2---前序遍历(递归) 3---前序遍历(非递归) 4---中序遍历(递归) 5---中序遍历(非递归) 6---后序遍历(递归) 7---后序遍历(非递归) 8---求树高 9---求叶子总数 10---输出二叉树 11...

    数据结构--二叉树--线索化二叉树

    线索化二叉树是一种特殊的二叉树,它通过在二叉链表的空指针位置附加线索,帮助我们在非递归方式下实现二叉树的遍历。中序遍历是二叉树遍历的一种,按照“左子树-根节点-右子树”的顺序访问节点。 中序线索化二叉树...

    算法-理论基础- 二叉树- 二叉树的遍历(包含源程序).rar

    通过阅读《算法-理论基础- 二叉树- 二叉树的遍历(包含源程序).pdf》这份文档,你将能够深入理解二叉树遍历的概念,并有机会通过实际的源代码加深理解,从而更好地掌握这个重要的数据结构和算法知识。在学习过程中...

    数据结构第五章-树与二叉树 二叉树的C语言实现代码

    该资源中为【数据结构】专栏——C语言实现二叉树篇章中涉及到... - 求二叉树第K层结点数的递归实现 - 求二叉树叶结点数的递归实现 - 功能测试函数的实现——通过层序遍历创建二叉树、创建BST 3. 队列基本功能实现文件

    c语言 二叉树应用:创建、递归非递归遍历、计算结点、分支、交换子树

    递归先序遍历二叉树: 递归中序遍历二叉树: 递归后序遍历二叉树: 非递归先序遍历二叉树: 非递归中序遍历二叉树: 非递归后序遍历二叉树: 非递归中序遍历二叉树(算法2): 层次遍历二叉树: 递归计算单...

    二叉树非递归遍历.zip-/二叉树非递归遍历.zip-二叉树非递归遍历.zip 二叉树非递归遍历.zip

    /*********************************************************** ***********************************************************/ #include #include #include #define MS 50 struct BTreeNode ...

    C++二叉树非递归以及递归算法

    3.使用递归 先序遍历一棵二叉树 4.使用递归 中序遍历一棵二叉树 5.使用递归 后序遍历一棵二叉树 6.使用非递归 先序遍历一棵二叉树 7.使用非递归 中序遍历一棵二叉树 8.使用非递归 后序遍历一棵二叉树 PS:代码为C++...

    数据结构-非递归遍历二叉树

    非递归遍历二叉树是一种不依赖递归函数来访问树的所有节点的方法,它通常通过栈或队列等数据结构来实现。下面我们将详细探讨非递归遍历二叉树的先序、中序和后序策略。 先序遍历是二叉树遍历的一种方法,其顺序为:...

    非递归二叉树递归创建.txt

    ### 非递归方式实现二叉树的创建与遍历 #### 一、引言 在计算机科学中,二叉树是一种常见的数据结构,它广泛应用于算法设计、数据库索引构建以及各种搜索操作中。通常,二叉树的创建与遍历可以通过递归的方式来实现...

Global site tag (gtag.js) - Google Analytics