C++实现建立和一二进制树的三个递归遍历
说明:这篇文章是学习交流,转载请注明出处,欢迎转载!
二叉树是一种常见的数据结构。二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的能够执行的C++代码来随便建立一个例如以下图所看到的的二叉树,建一棵二叉树是实现二叉树各种操作的基础,以下的程序也非常easy,这仅仅是二叉树练习的開始,以后的博文中,将会紧紧环绕这棵二叉树练习很多其它的操作:如求二叉树的大小。二叉树的深度。翻转二叉树...,这里仅仅是基础中的基础,仅仅是为以后的学习做铺垫。
以下给出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; }
执行结果例如以下: