1.题目


2.思路
递归的时候不小心把根节点也递归了,导致stackoverflow(栈溢出),应该是添加当前的根节点的值。
后序遍历包括根左右。
(1)定义树节点,包括int val,左节点,右节点。
(2)传入根节点进行递归
(3)另外写1个函数,执行递归逻辑,里面包含从左右根的遍历顺序,并把该结果列表加入根节点的值。
(4)创建树节点进行验证输出。
3.代码实现
输入root=[1,2,3]
输出[2,3,1]
import java.util.ArrayList;
import java.util.List;
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int val){this.val=val;};
TreeNode(int val,TreeNode left,TreeNode right){
this.val=val;
this.left=left;
this.right=right;
};
}
public class postOrder {
public List<Integer> pT(TreeNode root)
{
//结果集合
List<Integer> res=new ArrayList<>();
postOrderTree(root,res);
return res;
}
public void postOrderTree(TreeNode root,List<Integer> res)
{
if(root==null)
{
return ;
}
postOrderTree(root.left,res);
postOrderTree(root.right,res);
res.add(root.val);//到根节点的时候,直接把根节点加入到结果列表
}
public static void main(String[] args)
{
TreeNode root=new TreeNode(1);
root.left=new TreeNode(2);
root.right=new TreeNode(3);
postOrder test=new postOrder();
List<Integer> ans=test.pT(root);
System.out.println(ans);
}
}

247

被折叠的 条评论
为什么被折叠?



