C++实现二叉树的建立和三种递归遍历
说明:本文仅供学习交流,转载请标明出处,欢迎转载!
二叉树是一种常见的数据结构,二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的可以运行的C++代码来随便建立一个如下图所示的二叉树,建一棵二叉树是实现二叉树各种操作的基础,下面的程序也很简单,这只是二叉树练习的开始,以后的博文中,将会紧紧围绕这棵二叉树练习更多的操作:如求二叉树的大小,二叉树的深度,翻转二叉树...,这里只是基础中的基础,只是为以后的学习做铺垫。
下面给出C++代码,代码的功能包括:
1.建立如上图所示的简单的二叉树。
2.给出三种常见的二叉树的变量方式,拿来练练手吧。
下面的代码是可以直接运行的代码:
#include<iostream> using namespace std; struct Node { int data; Node *left; Node *right; Node(int data) { this->data=data; this->left=NULL; this->right=NULL; } }; class BinTree { public: Node *root; Node* CreateTree(); void preOrder(Node *r);//递归实现先序遍历 void InOrder(Node *r);//递归实现中序遍历 void PostOrder(Node *r);//递归实现后续遍历 }; Node* BinTree::CreateTree()//创建一棵二叉树 { Node *p1=new Node(1); Node *p2=new Node(2); Node *p3=new Node(3); Node *p4=new Node(4); Node *p5=new Node(5); Node *p6=new Node(6); Node *p7=new Node(7); Node *p8=new Node(8); Node *p9=new Node(9); p1->left=p2; p1->right=p3; p2->left=p4; p2->right=p5; p5->left=p6; p3->left=p7; p3->right=p8; p8->right=p9; root=p1; return p1; } void BinTree::preOrder(Node *r)//递归实现先序遍历 { if(r==NULL) { return ; } else { cout<<r->data<<" "; preOrder(r->left); preOrder(r->right); } } void BinTree::InOrder(Node *r)//递归实现中序遍历 { if(r==NULL) { return ; } else { InOrder(r->left); cout<<r->data<<" "; InOrder(r->right); } } void BinTree::PostOrder(Node *r)//递归实现后序遍历 { if(r==NULL) { return ; } else { PostOrder(r->left); PostOrder(r->right); cout<<r->data<<" "; } } int main() { BinTree t; t.CreateTree();//创建二叉树 cout<<"先序遍历:"; t.preOrder(t.root);//先序遍历 cout<<endl; cout<<"中序遍历:"; t.InOrder(t.root);//中序遍历 cout<<endl; cout<<"后序遍历:"; t.PostOrder(t.root);//后序遍历 cout<<endl; return 0; }
运行结果如下:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。