算法思想:已知先序遍历和中序遍历,如何求后序遍历?(1)确定树的根结点。树根是当前树中所有元素在先序遍历中最先出现的元素,即先序遍历的第一个结点就是二叉树的根。(2)求解树的子树。找到根在中序遍历的位置,位置左边是二叉树的左孩子,位置右边是二叉树的右孩子,如果根结点左边或右边为空,那么该方向子树为空;如果根结点左边和右边都为空,那么根结点已经成为叶子结点。(3)对二叉树的左、右孩子分别进行步骤(1)(2),直到求出二叉树结构为止。
代码如下:
package com.haobi;
/*
* 已知先序遍历和中序遍历,如何求后序遍历?
*
* (1)确定树的根结点。树根是当前树中所有元素在先序遍历中最先出现的元素,即先序遍历的第一个结点就是二叉树的根。
* (2)求解树的子树。找到根在中序遍历的位置,位置左边是二叉树的左孩子,位置右边是二叉树的右孩子,
* 如果根结点左边或右边为空,那么该方向子树为空;如果根结点左边和右边都为空,那么根结点已经成为叶子结点。
* (3)对二叉树的左、右孩子分别进行步骤(1)(2),直到求出二叉树结构为止。
*/
//定义结点结构
class Node3{
public int data;
public Node3 left;
public Node3 right;
public Node3(int data) {
this.data = data;
this.left = null;
this.right = null;
}
public Node3() {}
}
public class Test3 {
//定义根结点
private Node3 root;
//构造方法
public Test3() {
root