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;
          }
  • 相关阅读:
    图像滤波
    直方图histeq
    直方图
    基于灰度变换的图像增强
    图像增强
    图像旋转和缩放
    图像点运算
    像素的连接与联通
    程序员进阶之算法练习(一)
    RxSwift 系列(二)
  • 原文地址:https://www.cnblogs.com/rever/p/4999053.html
Copyright © 2011-2022 走看看