當前位置:編程學習大全網 - 編程語言 - 用C++編程,從鍵盤輸入15個數,把他們存儲於二叉樹中,使二叉樹的中序遍歷從小到大有序

用C++編程,從鍵盤輸入15個數,把他們存儲於二叉樹中,使二叉樹的中序遍歷從小到大有序

#include<iostream>

using?std::cin;

using?std::cout;

using?std::endl;

struct?node

{

float?data;//存儲數據

node?*?lchild;//左孩子

node?*?rchild;//右孩子

};

void?search(node?*root,node?*&p,float?val)//root為樹的根,p為插入數據的雙親節點,若果為空,則說明樹為空

{

if(!root)

{

p=root;

}

else

{

while(root&&root->data!=val)

{

p=root;

if(root->data<val)

{

root=root->rchild;

}

else

{

root=root->lchild;

}

}

if(root)

{

p=root;

}

}

}

void?insert(node?*&root,float?val)//對二叉樹root插入數據為val的節點

{

node?*p=nullptr;

search(root,p,val);

node?*temp=new?node;

temp->data=val;

temp->lchild=temp->rchild=nullptr;

if(!p)

{

root=temp;

}

else?if(p->data<val)

{

p->rchild=temp;

}

else

{

p->lchild=temp;

}

}

void?inordertraverse(node*&root)//中序遍歷二叉樹

{

if(root)

{

inordertraverse(root->lchild);

cout<<root->data<<"?";

inordertraverse(root->rchild);

}

}

void?destroy(node?*&root)//摧毀樹,釋放內存

{

if(root)

{

destroy(root->lchild);

destroy(root->rchild);

//cout<<"刪除節點:"<<root<<"\n";

delete?root;

}

}

void?main()

{

node*?tree=nullptr;

int?num=0;

cout<<"輸入數據個數:";

cin>>num;

float?val=0;

while(num)//創建num個節點的二叉樹

{

num--;

cin>>val;

insert(tree,val);

}

cout<<"中序遍歷:\n";

inordertraverse(tree);//中序遍歷二叉樹

destroy(tree);

}

測試結果:

如有疑問,可以追問~

  • 上一篇:金莎科技美容倡導者掌握不動刀變美核心科技
  • 下一篇:記《壹想到還有95%的問題留給人類我就放心了》
  • copyright 2024編程學習大全網