Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication4.cpp : 定義主控台應用程式的進入點。
- //
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- class treenode
- {
- public:
- int value=NULL;
- treenode *l=NULL, *r=NULL;
- };
- class tree
- {
- public:
- void append(int);
- void InOrder(treenode*);
- void PreOrder(treenode*);
- void PostOrder(treenode*);
- treenode *root = new(treenode);
- private:
- };
- void tree::append(int in)
- {
- treenode* pos = root;
- if (root->value == NULL)
- {
- root->value = in;
- cout << "append " << in << " to root" << endl;
- goto end;
- }
- while (true)
- {
- if (pos->value < in)
- {
- if (pos->l != NULL)
- {
- pos = pos->l;
- }
- else
- {
- pos->l = new(treenode);
- pos->l->value = in;
- cout << "append " << in << endl;
- goto end;
- }
- }
- else if (pos->value > in)
- {
- if (pos->r != NULL)
- {
- pos = pos->r;
- }
- else
- {
- pos->r = new(treenode);
- pos->r->value = in;
- cout << "append " << in << endl;
- goto end;
- }
- }
- else
- {
- cout << pos->value << ' ' << in;
- cout << "append same value\n";
- goto end;
- }
- }
- end:
- return;
- }
- void tree::InOrder(treenode *pos)
- {
- if (pos != NULL)
- {
- InOrder(pos->l);
- cout << '[' << pos->value << ']';
- InOrder(pos->r);
- }
- }
- void tree::PreOrder(treenode *pos)
- {
- if (pos != NULL)
- {
- cout << '[' << pos->value << ']';
- PreOrder(pos->l);
- PreOrder(pos->r);
- }
- }
- void tree::PostOrder(treenode *pos)
- {
- if (pos != NULL)
- {
- PostOrder(pos->l);
- PostOrder(pos->r);
- cout << '[' << pos->value << ']';
- }
- }
- int main()
- {
- tree ta;
- ta.append(50);
- ta.append(40);
- ta.append(30);
- ta.append(45);
- ta.append(48);
- ta.append(65);
- ta.append(70);
- ta.InOrder(ta.root);
- cout << endl;
- ta.PreOrder(ta.root);
- cout << endl;
- ta.PostOrder(ta.root);
- cout << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement