[LintCode/LeetCode] Binary Tree Preorder Traversal

news/2024/5/21 9:26:09

Problem

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

Example

Given:

    1
   / \
  2   3
 / \
4   5

return [1,2,4,5,3].

Challenge

Can you do it without recursion?

Note

当你被challenge的时候,人家问,Can you do it without recursion? 一定要说,当然可以啦!所以,不用recursion,怎么办?幸好,这是一道preorder的题目,只要逐层遍历,就可以了。所以,试一试用堆栈的做法吧!记得Stack的特点是后入先出哦!

Solution

Recursion

public class Solution {
    public ArrayList<Integer> preorderTraversal(TreeNode root) {
        ArrayList<Integer> res = new ArrayList();
        if (root == null) return res;
        helper(res, root);
        return res;
    }
    public void helper(ArrayList<Integer> res, TreeNode root) {
        res.add(root.val);
        if (root.left != null) helper(res, root.left);
        if (root.right != null) helper(res, root.right);
    }
}

Stack

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

http://www.niftyadmin.cn/n/4394730.html

相关文章

android与相机连接电脑,使用Android手机或平板电脑控制dSLR相机

使用Android应用程序增强dSLR相机的功能&#xff0c;该功能可提供更好的聚焦&#xff0c;定时摄影&#xff0c;甚至还可以在拍摄照片时共享照片。莎朗瓦克宁(Sharon Vaknin)向您展示了如何。您拥有的是Android手机或平板电脑?考虑它是dSLR最好的新配件。借助一个小适配器和创新…

莆田系医院网站提醒插件 v1.1.4

莆田系医院网站提醒插件 v1.1.4 发布&#xff0c;有如下更新&#xff1a; 修正插件中的英文翻译问题&#xff1b;针对“上海远大心胸医院”、“上海仁爱医院”的屏蔽做了反屏蔽措施&#xff0c;两个医院的屏蔽代码一样&#xff0c;应该是同一个老板&#xff0c;或者同一家外包网…

小米手环6NFc支持Android,小米手环6nfc有几种运动模式_小米手环6nfc支持几种运动模式...

小米手环6nfc版发布之后有不少人关注&#xff0c;这个版本相对之前增加了不少运动模式&#xff0c;具体小米手环6nfc有几种运动模式&#xff0c;大家感兴趣的话不妨来中国排行网看看小米手环6nfc支持几种运动模式。1、小米手环6nfc有几种运动模式这次小米手环6在运动方面&#…

JavaSE聊天室

今天学习了一下简单聊天程序(类似QQ那种)的编写过程&#xff0c;从最初的0.1版本到最后的1.3版本&#xff0c;功能不断地增强&#xff0c;下面对一天的学习内容进行梳理。 版本0.1 我们的需求是显示一个窗体,其他什么也不用做,其他功能逐步添加,我们这里用的就是AWT中的Frame; …

android studio9.0闪退,andorid studioapp闪退

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package com.example.asus.gridview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.GridView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.…

关于Base⑥4编码换行回车引发的blood事件

2019独角兽企业重金招聘Python工程师标准>>> 分析某个sdk的通讯协议&#xff0c;万变不离其宗&#xff0c;基本都是对称加密或者非对称加密后圌进行通讯完整性以及内容可靠性的反复校验。 周三稍微逆向差不多看了实现&#xff0c;偷懒没继续&#xff0c;周四下午任务…

向国外作者发邮件要代码

http://www.rijigu.com/diary/22787/转载于:https://www.cnblogs.com/Wanggcong/p/5503284.html

Coggle 30 Days of ML(23年7月)任务七:训练TextCNN模型

Coggle 30 Days of ML&#xff08;23年7月&#xff09;任务七&#xff1a;训练TextCNN模型 任务七&#xff1a;使用Word2Vec词向量&#xff0c;搭建TextCNN模型进行训练和预测 说明&#xff1a;在这个任务中&#xff0c;你将使用Word2Vec词向量&#xff0c;搭建TextCNN模型进…