zoukankan      html  css  js  c++  java
  • 二叉树前序遍历

     

    前序遍历 1-(2-4-5)-3根-左-右

    注意:根-左(含左边所有,左边的所有也是根左右结构)-右(右边所有)

    1. 非递归

    一个栈Stack

    一个动态数组ArrayList

     bug:先检查root是否为空

      2.递归

    很简单,把根放入,递归左子树,再递归右子树

    // 把root为跟的preorder加入result里面
    private void traverse(TreeNode root, ArrayList<Integer> result) {
            if (root == null) {
                return;
            }
    
            result.add(root.val);
            traverse(root.left, result);
            traverse(root.right, result);
        }
    }

      3.分治法:先分后治 有点难理解

    先分,对子问题用相同的方法

    bug:traverse拼写错误,ArrayList没有声明存储类型

    ArrayList left = preorderTreversal(root.left);
    ArrayList<Integer> left= preorderTraversal(root.right);

    public class Solution {
        public ArrayList<Integer> preorderTraversal(TreeNode root) {
            ArrayList<Integer> result = new ArrayList<Integer>();
            // null or leaf
            if (root == null) {
                return result;
            }
    
            // Divide
            ArrayList<Integer> left = preorderTraversal(root.left);
            ArrayList<Integer> right = preorderTraversal(root.right);
    
            // Conquer
            result.add(root.val);
            result.addAll(left);
            result.addAll(right);
            return result;
        }
    }




  • 相关阅读:
    POJ2352
    POJ 2524 并查集
    A POJ1611
    树状dp--B
    spring mvc实现文件上传与下载
    Joda-Time
    JAVA对象与JSON之间的转换
    jackson-databind注解
    JPA注解
    springMVC、spring、jpa、springData整合配置
  • 原文地址:https://www.cnblogs.com/yunyouhua/p/6709627.html
Copyright © 2011-2022 走看看