zoukankan      html  css  js  c++  java
  • Binary Tree Preorder Traversal

    Preorder: first, visit parent node, then, left child, last is to visit right child.

    Algorithm 1 -- DFS & Stack

    We can use stack to store left child and right child.

     1 public class Solution {
     2     public ArrayList<Integer> inorderTraversal(TreeNode root) {
     3         // IMPORTANT: Please reset any member data you declared, as
     4         // the same Solution instance will be reused for each test case.
     5          ArrayList<Integer> lst = new ArrayList<Integer>();
     6  
     7         if(root == null)
     8             return lst; 
     9  
    10         Stack<TreeNode> stack = new Stack<TreeNode>();
    11         //define a pointer to track nodes
    12         TreeNode p = root;
    13  
    14         while(!stack.empty() || p != null){
    15  
    16             // if it is not null, push to stack
    17             //and go down the tree to left
    18             if(p != null){
    19                 lst.add(p.val);
    20                 stack.push(p);
    21                 p = p.left;
    22             }else{
    23                 TreeNode t = stack.pop();
    24                 p = t.right;
    25             }
    26         }
    27  
    28         return lst;
    29     }
    30 }

    Algorithm 2 -- Recursive

     1 public class Solution {
     2     List<Integer> result = new ArrayList<Integer>();
     3  
     4     public List<Integer> preorderTraversal(TreeNode root) {
     5         if(root != null){
     6             helper(root);
     7         }
     8         return result;
     9     }
    10  
    11     public void helper(TreeNode p){
    12         result.add(p.val);
    13         if(p.left!=null)
    14             helper(p.left);
    15         if(p.right!=null)
    16             helper(p.right);
    17     }
    18 }    
    
    
  • 相关阅读:
    Quartz 基本概念及原理
    quartz-2.2.x 快速入门 (1)
    hive踩过的小坑
    spring profile 多环境配置管理
    win10窗口设置眼睛保护色
    优雅地在markdown插入图片
    Using Spring Boot without the parent POM
    isDebugEnabled作用
    Log 日志级别
    为什么要使用SLF4J而不是Log4J
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4850600.html
Copyright © 2011-2022 走看看