编写一个程序,生成一棵二叉树并进行基本操作
#include<iostream>
using namespace std;
struct TreeNode{
int data; //数据域
TreeNode *leftChild; //左子树指针域
TreeNode *rightChild; //右子树指针域
}; //定义二叉树结点的结构体
//创建二叉树:先序遍历创建二叉树:先输入一个数字0表示该节点为空节点,否则就是该节点的数据。
TreeNode* CreateTree(){ //返回一个指向新创建的节点的指针。
int data; //用来存储从键盘上输入的数字。
cout<<"请输入一个整数(0代表无):"; cin>>data; if(data == 0) return NULL; TreeNode *root = new TreeNode(); root->data = data; cout<<"请输入"<<data<<"的左子树:"; root->leftChild = CreateTree(); cout<<"请输入"<<data<<"的右子树:"; root->rightChild = CreateTree(); return root ; }
//前序遍历二叉树:递归方式实现。 void PreOrder(TreeNode *root){ if (root == NULL) return ; cout << root -> data << " " ; PreOrder(root -> leftChild); PreOrder(root -> rightChild); }
//中序遍历二叉树:递归方式实现。 void InOrder(TreeNode *root){ if (root == NULL) return ; InOrder(root -> leftChild); cout << root -> data << " " ; InOrder(root -> rightChild); }
//后序遍历二叉树:递归方式实现。 void PostOrder(TreeNode *root){ if (root == NULL) return ; PostOrder(root -> leftChild); PostOrder(root -> rightChild); cout << root -> data << " " ;} int main(){ TreeNode* treeRoot=CreateTree(); cout<<endl<<endl; cout << "前序遍历:"; PreOrder (treeRoot) ; cout << endl ; cout << "中序遍历:"; InOrder (treeRoot) ; cout << endl ; cout
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。