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




  • 相关阅读:
    结对项目开始
    团队项目开始
    个人项目总结
    python面向对象
    OSI七层模型
    Django中的orm的惰性机制
    Python装饰器
    python运算符
    python元祖和列表
    Sencha Touch 1.x 快速入门 第三章 布局(2) Card布局
  • 原文地址:https://www.cnblogs.com/yunyouhua/p/6709627.html
Copyright © 2011-2022 走看看