LeetCode004:BinaryTreePostorderTraversal

来源:互联网 发布:淘宝店铺广告短信 编辑:程序博客网 时间:2024/06/03 23:46
package com.abuge;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.junit.Test;/** * 有一个二叉树,返回它的后序遍历的值 * 例如: * 二叉树{1,#, 2, 3} * 1 *  \ *   2 * / *    3 * 返回:[3, 2, 1] * @author AbuGe *思路: *1、对于一个List集合的后序遍历,最后一个元素肯定是链表的第一个节点 *2、递归最简单,以根节点为分割点将左右子树节点依次添加到结果链表中 *步骤: *1、递归左子树 *2、递归又子树 *3、将根节点添加到结果链表中 */class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(int x){val = x;}}public class Solution{List<Integer> list = new ArrayList<Integer>();public List<Integer> postorderTraversal(TreeNode root){if(root != null){//递归出口if(root.left == null && root.right == null){list.add(root.val);root = null;}if(root != null){//递归左子树postorderTraversal(root.left);//递归右子树postorderTraversal(root.right);//添加根节点list.add(root.val);}}return list;}@Testpublic void test(){TreeNode node1 = new TreeNode(1);TreeNode node2 = new TreeNode(2);TreeNode node3 = new TreeNode(3);node1.right = node2;node2.left = node3;List<Integer> li = postorderTraversal(node1);StringBuilder sb = new StringBuilder();Iterator<Integer> it = li.iterator();sb.append('[');while(it.hasNext()){sb.append(it.next());sb.append(',');}//修改字符串格式符合要求int len = sb.length();sb.deleteCharAt(len - 1);sb.append(']');System.out.println(sb);}}

0 0
原创粉丝点击