///三叉链表
//#pragma once
//#include
//#include
//using namespace std;
//template
//struct BinaryTreeNode_P
//{
//T _data;
//BinaryTreeNode_P* _left;
//BinaryTreeNode_P* _right;
//BinaryTreeNode_P* _parent;
//BinaryTreeNode_P(const T& x)
//:_data(x)
//, _left(NULL)
//, _right(NULL)
//, _parent(NULL)
//{}
//};
//
//template
//class BinaryTree_P
//{
//protected:
//BinaryTreeNode_P* _CreateTree(T a[], size_t& index, const size_t size)
//{
//BinaryTreeNode_P* root = NULL;
//if (index
//{
//root = new BinaryTreeNode_P(a[index]);
//root->_left = _CreateTree(a, ++index, size);
//if (root->_left)
//root->_left->_parent = root;
//root->_right = _CreateTree(a, ++index, size);
//if (root->_right)
//root->_right->_parent = root;
//}
//return root;
//}
//public:
//BinaryTree_P()
//:_root(NULL)
//{}
//BinaryTree_P(T* a, size_t size)
//{
//size_t index = 0;
//_root = _CreateTree(a, index, size);
//}
//void PreOrder_Non_R()
//{
//stack*> s;
//if (_root)
//s.push(_root);
//while (!s.empty())
//{
//BinaryTreeNode_P* top = s.top();
//cout <_data <
//s.pop();
//if (top->_right)
//s.push(top->_right);
//if (top->_left)
//s.push(top->_left);
//}
//cout <
//}
//protected:
//BinaryTreeNode_P* _root;
//};