判断整数序列是不是二元查找树的后序遍历结果

来源:互联网 发布:浮生六记读后感知乎 编辑:程序博客网 时间:2024/05/22 17:28

输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果,如果是返回true,否则返回false。

例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:

     8  /  / 6    10/ /  / /

5 7 9 11
因此返回true。

如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。

void findLastSequence(TNode* head) {if (!head)return;stk.push(head->data);findLastSequence(head->right);findLastSequence(head->left);}bool isLastSequence(int* arr, int len, TNode* head) {findLastSequence(head);if (!arr || !len || len != stk.size()) {return false;}int id = 0;while (!stk.empty()) {if (arr[id++] != stk.top()) {return false;}stk.pop();}return true;}


0 0