判断整数序列是不是二元查找树的后序遍历结果
2013-04-10 20:37
239 查看
//实际上就是判断能否由后序和中序序列建树 #include <iostream> using namespace std; class BinTree{ public: BinTree(int v){ value = v; left = NULL; right = NULL; } int value; BinTree* left; BinTree* right; }; int* getPos(int* begin,int* end,int c) { while(begin<=end) { if(*begin == c) return begin; begin ++; } return NULL; } bool buildTree(BinTree* &tree,int* beginInOrder,int* endInOrder,int* beginPostOrder,int* endPostOrder){ if(beginInOrder > endInOrder || beginPostOrder > endPostOrder) return true; int value = *endPostOrder; tree = new BinTree(value); int* pos = getPos(beginInOrder,endInOrder,value); if(!pos) return false; int* leftBeginInOrder = beginInOrder; int* leftEndInOrder = pos - 1; int* rightBeginInOrder = pos + 1; int* rightEndInOrder = endInOrder; int* leftBeginPostOrder = beginPostOrder; int* leftEndPostOrder = leftBeginPostOrder + (leftEndInOrder - leftBeginInOrder); int* rightBeginPostOrder = leftEndPostOrder + 1; int* rightEndPostOrder = endPostOrder - 1; bool leftRet = buildTree(tree->left,leftBeginInOrder,leftEndInOrder,leftBeginPostOrder,leftEndPostOrder); bool rightRet = buildTree(tree->right,rightBeginInOrder,rightEndInOrder,rightBeginPostOrder,rightEndPostOrder); return leftRet&&rightRet; } void print(BinTree* tree) { cout<<tree->value<<endl; } void inOrder(BinTree* tree,void visit(BinTree*)){ if(!tree) return; inOrder(tree->left,visit); visit(tree); inOrder(tree->right,visit); } int main(){ int in[] = {5,6,7,8,9,10,11}; int post[] = {5,7,6,9,11,10,8}; BinTree* tree; bool success = buildTree(tree,in,in+6,post,post+6); if(success) inOrder(tree,&print); else cout<<"fail"; return 0; }
相关文章推荐
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 算法—判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 9. 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 面试题---判断整数序列是不是二元查找树的后序遍历结果
- 面试100题:9.判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- MS100(9)-判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 第9 题 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- IT公司100题-9-判断整数序列是不是二元查找树的后序遍历结果
- 算法讨论(五)--判断整数序列是不是二元查找树的后序遍历结果
- 9、判断整数序列是不是二元查找树的后序遍历结果