Construct Binary Tree from Preorder and Inorder Traversal
通过二叉树的 前序遍历序列 和 中序遍历序列 重构二叉树
步骤:
1、遍历前序遍历序列,每次遍历一个值,创建一个节点,并将节点压入栈,新创建的节点连接为栈顶节点的左孩子节点(如果第2步中的记录pop的节点非空,那么连接为该记录节点的右孩子)
2、每次压入新节点后需要进行一次比较,栈顶节点的值与中序遍历开头比较,如果相等,那么栈pop,中序遍历开头向后移动一位(后面一位作为开头),之后再次比较,直到不相等为止,如果存在一次栈pop,那么用一个变量记录之,直到最后一次pop,这个变量最终为最后一次pop的节点,如果没有pop,那么该节点赋值为空
3、反复进行1,2步,直到遍历完前序遍历序列,那么二叉树创建完毕,返回第一次创建的节点(那个节点为 root 哦,一开始要存储一下,此处为细节处理)
Construct Binary Tree from Postorder and Inorder Traversal
同上,自行修改算法即可