#include <iostream>
using namespace std;
#include<stdlib.h>
template<class T>
class SeqStack
{
private:
T data[100];
int top;
public:
SeqStack(void)
{
top = 0;
};
~SeqStack(void) {};
void Push(const T& item)
{
if (top == 100)
{
cout << "堆疊已滿" << endl;
exit(0);
}
data[top] = item;
top++;
}
T Pop(void)
{
if (top == 0)
{
cout << "堆疊已空" << endl;
exit(0);
}
top--;
return data[top];
}
T GetTop(void)const
{
if (top == 0)
{
cout << "堆疊已空" << endl;
exit(0);
}
return data[top - 1];
}
int NotEmpty(void)const
{
return(top != 0);
}
};
template<class T>
class BiTreeNode
{
private:
BiTreeNode<T>* leftChild;
BiTreeNode<T>* rightChild;
public:
T data;
BiTreeNode<T>(T item, BiTreeNode<T>* left = NULL, BiTreeNode<T>* right = NULL) : data(item), leftChild(left), rightChild(right) {}
~BiTreeNode<T>() {}
BiTreeNode<T>*& Left() { return leftChild; }
BiTreeNode<T>*& Right() { return rightChild; }
};
template<class T>
BiTreeNode<T>* GetTreeNode(const T item, BiTreeNode<T>* left = NULL, BiTreeNode<T>* right = NULL)
{
BiTreeNode<T>* p;
p = new BiTreeNode<T>(item, left, right);
return p;
}
template<class T>
void PreOrder(BiTreeNode<T>* t, void Visit(T data))
{
SeqStack<char> stack;
stack.Push(t->data);
while (stack.NotEmpty())
{
if (t->Right() != NULL)
stack.Push(t->Right()->data);
if (t->Left() != NULL)
stack.Push(t->Left()->data);
}
}
template<class T>
void Visit(T data) { cout << data << ' '; }
void MakeCharTree(BiTreeNode<char>*& root)
{
BiTreeNode<char>* b, * c, * d, * e, * f, * g, * null = NULL;
g = GetTreeNode('G');
d = GetTreeNode('D', null, g);
b = GetTreeNode('B', d);
e = GetTreeNode('E');
f = GetTreeNode('F');
c = GetTreeNode('C', e, f);
root = GetTreeNode('A', b, c);
}
int main()
{
BiTreeNode<char>* root1;
MakeCharTree(root1);
PreOrder(root1, Visit);
return 0;
}
uj5u.com熱心網友回復:
while (stack.NotEmpty())// stack.Push后,永不為空,
{
if (t->Right() != NULL) // t永遠沒有變
stack.Push(t->Right()->data);
if (t->Left() != NULL)
stack.Push(t->Left()->data);
}
uj5u.com熱心網友回復:
真的是太感謝了uj5u.com熱心網友回復:
請問應該怎么修改呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95892.html
標籤:其它技術問題
上一篇:c語言
