algorithmic problem
发布时间
阅读量:
阅读量
栈的压入与弹出操作。
给定两个整数序列,其中第一个序列表示栈的压入顺序,需判断第二个序列是否为该栈可能的弹出顺序。假设所有压入栈的数字互不相同。例如,序列1,2,3,4,5是某栈的压入顺序,那么序列4,5,3,2,1是该压栈顺序对应的一个可能弹出顺序,而序列4,3,5,1,2则不可能成为该压栈顺序的弹出结果。(注意:这两个序列的长度必须一致)
分析 :可以构建一个栈stack,并令i=0。依次将元素压入栈中,在每次压入后与弹出序列arr[i]进行比较,若相等则将栈顶元素弹出,并使i自增1,重复此过程。之后继续向栈中压入下一个元素。如果最终栈为空,则说明该弹出序列为有效序列。
2.输入一个整数数组,判断其是否为某个二叉搜索树后序遍历的结果。若为是,则输出Yes;否则输出No。假设数组中的任意两个整数均不相同。
分析 :首先取出数组最后一个元素end,然后从前往后或从后往前利用end对数组进行分割,再检查另一部分数据是否满足二叉搜索树中关于end值的大小关系要求。若不符合,则返回No;若符合,则继续递归处理。
3.输入一棵二叉树及一个整数,输出所有路径上节点值之和等于该整数的路径。路径定义为从树根开始向下至叶子节点所经过的所有节点构成的一条路径。
分析 :函数结构具有参考价值,在递归遍历过程中通过vector引用实
全部评论 (0)
还没有任何评论哟~
