zoukankan      html  css  js  c++  java
  • LeetCode——Binary Tree Postorder Traversal

    Given a binary tree, return the postorder traversal of its nodes' values.

    For example:
    Given binary tree {1,#,2,3},

       1
        
         2
        /
       3
    

    return [3,2,1].

    Note: Recursive solution is trivial, could you do it iteratively?

    中文:二叉树的兴许遍历(左-右-根)。能用非递归吗?

    递归:

    public class BinaryTreePostorderTraversal {
        public List<Integer> postorderTraversal(TreeNode root) {
        	List<Integer> list = new ArrayList<Integer>();
            if(root == null)
            	return list;
            list.addAll(postorderTraversal(root.left));
            list.addAll(postorderTraversal(root.right));
            list.add(root.val);
            return list;
        }
        // Definition for binary tree
        public class TreeNode {
            int val;
            TreeNode left;
            TreeNode right;
            TreeNode(int x) { val = x; }
        }
    }

    非递归:

        public List<Integer> postorderTraversal(TreeNode root){
        	List<Integer> list = new ArrayList<Integer>();
        	if(root == null)
        		return list;
        	Stack<TreeNode> stack = new Stack<TreeNode>();
        	stack.push(root);//最后訪问
        	while(!stack.isEmpty()){
        		TreeNode current = stack.peek();
        		//根节点无子节点
        		if(current.left == null && current.right == null){
        			list.add(current.val);
        			stack.pop();
        		}
        		if(current.left != null){
        			stack.push(current.left);
        			current.left = null;
        			continue;
        		}
        		if(current.right != null){
        			stack.push(current.right);
        			current.right = null;
        			continue;
        		}
        	}
        	return list;
        }


查看全文
  • 相关阅读:
    多种支付实现(只需要添加, 修改类方法)
    事务的隔离级别 另一种事务开启方式
    序列化类补充 source关键字参数 SerializerMethodField方法
    分类的数据处理 第一种递归处理,第二种树型结构 无极限分类
    数据库补充 navicate导入与导出
    微信小程序开发5 后端解析wx.getUserInfor中的用户信息, 微信小程序支付
    微信小程序开发4 登录与授权
    微信小程序开发3 自定义组件(传参), 页面跳转(传参), 小程序本地存储, 小程序向django请求接口
    前八后十六节奏
    [编织消息框架][JAVA核心技术]动态代理应用11-水平扩展实现
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10551927.html
  • Copyright © 2011-2022 走看看