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;
        }


查看全文
  • 相关阅读:
    软件技术发展的几个阶段
    MOOONscheduler核心设计图(初稿)
    Write Read Writeln Readln console
    Win32Check对Windows操作 注销 重新启动 关闭计算机_Win32Check
    WM_nclButtonDblClk响应标题栏事件_message
    使用 “+”号实现多个字符串的连接
    TRichEdit_控制TRichEdit组件滚动
    取得字符串中指定的字符str[]
    undo RichEdit1
    使Memo 原有的右键功能失效 _OnContextPopup
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10551927.html
  • Copyright © 2011-2022 走看看