zoukankan      html  css  js  c++  java
  • LeetCode(144):Binary Tree Preorder Traversal

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

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

       1
        
         2
        /
       3
    

    return [1,2,3].

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

    非递归法(用栈来还原递归过程):

    public class Solution {
          static  List<Integer> res = new ArrayList<>();
          static  Stack<TreeNode> stack = new Stack<>();
          public static List<Integer> preorderTraversal_inStack(TreeNode root) {
              if(root == null) return new ArrayList<Integer>();
                stack.push(root);
                while(!stack.isEmpty()){
                    TreeNode tr = stack.pop();
                    res.add(tr.val);
                    if(tr.right!=null){
                        stack.push(tr.right);
                    }
                    if(tr.left!=null){
                        stack.push(tr.left);
                    }
                }
                return res; 
            }

    递归法:

     public static List<Integer> preorderTraversal(TreeNode root) {
              if(root==null) return new ArrayList<Integer>();
              res.add(root.val);
              while(root.right!=null||root.left!=null){
                  preorderTraversal(root.right);
                  preorderTraversal(root.left);
              }
              return res;
          }
  • 相关阅读:
    守卫者的挑战
    黑魔法师之门
    noip2015 普及组
    noip2015 提高组day1、day2
    40026118素数的个数
    高精度模板
    经典背包系列问题
    修篱笆
    [LintCode] Linked List Cycle
    [LintCode] Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/rever/p/4999053.html
Copyright © 2011-2022 走看看