读书人

创造二叉树(递归)

发布时间: 2012-09-23 10:28:11 作者: rapoo

创建二叉树(递归)

非递归创建二叉树,需要用到栈,的确太烦了。这里只给出递归创建二叉树的方法。

// node.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;struct node{char value;node* left;node* right;node(char v,node* l=NULL,node* r=NULL):value(v),left(l),right(r){}};void preordertraverse(node* t){if(t){cout<<t->value<<" ";preordertraverse(t->left);preordertraverse(t->right);}}//递归删除,将new的节点delete,防内存泄漏void deletetree(node* t){if(t->left==NULL&&t->right==NULL){delete t;t=NULL;}if(!t)return;else{if(t->left)deletetree(t->left);if(t->right)deletetree(t->right);if(t->left==NULL&&t->right==NULL){delete t;t=NULL;}}}int _tmain(int argc, _TCHAR* argv[]){node* t1=new node('7');node* t2=new node('8');node* t3=new node('5',t1,t2);node* t4=new node('4');node* t5=new node('6');node* t6=new node('2',t4,t3);node* t7=new node('3',NULL,t5);node* t8=new node('1',t6,t7);preordertraverse(t8);deletetree(t8);cout<<endl;return 0;}

此方法通过构造函数的方法,处理节点之间的关系,比较方便。

1楼muweiyou昨天 20:34
悲剧了,上午写好的,现在我一修改直接把原来的替换了。。。

读书人网 >其他相关

热点推荐