当前位置: 首页 > 编程日记 > 正文

LeetCode:144_Binary Tree Preorder Traversal | 二叉树的前序遍历 | Medium

题目:Binary Tree Preorder Traversal

二叉树的前序遍历,同样使用栈来解,代码如下:

 1 struct TreeNode {
 2     int            val;
 3     TreeNode*    left;
 4     TreeNode*    right;
 5     TreeNode(int x): val(x), left(NULL),right(NULL) {}
 6 };
 7 
 8 vector<int> preorderTraversal(TreeNode *root) //非递归的前序遍历(用栈实现)
 9 {
10     if (NULL == root) {
11         cout << "tree is empty!" << endl;
12         exit(0);
13     }
14 
15     TreeNode *pre = root;
16     //TreeNode *pTemp = pre;
17     stack<TreeNode *> tree_stack;
18     vector<int> tree_vector;
19     
20     tree_stack.push(pre);
21     while (!tree_stack.empty()) {
22         TreeNode *pTemp = tree_stack.top();
23         tree_stack.pop();
24 
25         tree_vector.push_back(pTemp->val);
26         if (pTemp->right != NULL) 
27             tree_stack.push(pTemp->right);
28         if (pTemp->left != NULL)
29             tree_stack.push(pTemp->left);
30     }
31     return tree_vector;
32 }

相关文章:

swift (Singleton)模式

一不安全的单例实现在上一篇文章我们给出了单例的设计模式&#xff0c;直接给出了线程安全的实现方法。单例的实现有多种方法&#xff0c;如下面&#xff1a;?123456789101112class SwiftSingleton { class var shared: SwiftSingleton { if !Inner.instance { Inner.insta…

Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(C++)

MXNet源码版本号为1.3.0&#xff0c;其它依赖库的版本号可参考&#xff1a;https://blog.csdn.net/fengbingchun/article/details/84997490 build.sh脚本内容为&#xff1a; #! /bin/bashreal_path$(realpath $0) dir_namedirname "${real_path}" echo "real_…

十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记

整理 | Jane 编辑 | Just 出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;近期&#xff0c;梁劲传来该笔记重大更新的消息。《机器学习——从入门到放弃》这本笔记的更新没有停止&#xff0c;在基于上一版的基础上丰富了近 200 页计算机视觉领域的知识内容…

Python实现五子棋人机对战 | CSDN博文精选

作者 | 吴小鹏 来源 | 数据札记倌&#xff08;ID:Data_Groom&#xff09;五子棋是常见的一款小游戏&#xff0c;五子棋问题是人工智能中的一个经典问题。这篇文章主要介绍了Python版本五子棋的实现代码&#xff0c;大家可以做个参考&#xff0c;与我的傻儿子对弈一下。简 述虽…

HTTPS协议简介

HTTPS(HyperText Transfer Protocol Secure, 超文本传输安全协议)&#xff1a;是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信&#xff0c;但利用SSL/TLS来加密数据包。HTTPS开发的主要目的&#xff0c;是提供对网站服务器的身份认证&#xff0c;保护交换…

闭包回调的写法

初学swift&#xff0c;封装了NSURLSession的get请求,在请求成功闭包回调的时候程序崩溃了 然后在图中1&#xff0c;2&#xff0c;3位置加上惊叹号“&#xff01;”&#xff0c;再把4&#xff0c;5&#xff0c;6的惊叹号去掉就闭包回调成功了

错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制...

new DataRow 的方式&#xff1a; DataTable pDataTable new DataTable();DataRow pRow new DataRow(); 正确的方式&#xff1a; DataRow pRowpDataTable.newRow(); 转载于:https://www.cnblogs.com/wangzianan/p/4034892.html

iOS 支付 [支付宝、银联、微信]

这是开头语 前不久做了一个项目&#xff0c;涉及到支付宝和银联支付&#xff0c;支付宝和银联都是业界的老大哥&#xff0c;文档、SDK都是很屌&#xff0c;屌的找不到&#xff0c;屌的看不懂&#xff0c;屌到没朋友&#xff08;吐槽而已&#xff09;&#xff0c;本文将涉及到的…

base64开源库介绍及使用

网上有一些开源的base64编解码库的实现&#xff0c;下面介绍几个&#xff1a; cppcodec是一个仅包括头文件的C11库&#xff0c;用于编解码RFC 4648中指定的base64, base64url, base32, base32hex等&#xff0c;它的License为MIT&#xff0c;源码在https://github.com/tplgy/cp…

情感识别难?图神经网络创新方法大幅提高性能

作者 | Kevin Shen译者 | Monanfei出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】最近&#xff0c;深度学习在自然语言处理领域&#xff08;NLP&#xff09;取得了很大的进步。随着诸如 Attention 和 Transformers 之类新发明的出现&#xff0c;BERT 和 XL…

Java的学习之路(1)

学过C语言之后&#xff0c;尝试接触Java. 借博文来记录自己学习的过程. Test01:利用循环&#xff0c;输出整数1-999之和 1 //2 //循环计算1到999的整数之和并输出3 //4 package demo;5 6 public class Main {7 8 public static void main(String[] args) {9 int su…

Swift - 使用addSubview()方法将StoryBoard中的视图加载进来

使用 Storyboard 我们可以很方便地搭建好各种复杂的页面&#xff0c;同时通过 segue 连接可以轻松实现页面的跳转。但除了segue&#xff0c;我们还可以使用纯代码的方式实现Storyboard界面的跳转。 比如&#xff1a;使用 presentViewController() 方法将当前页面视图切换成新视…

这项技术厉害了!让旅行者 2 号从星际空间发首批数据!

立即购票&#xff1a;https://dwz.cn/z1jHouwE物联网作为信息系统向物理世界的延伸&#xff0c;极大地拓展了人类认知和控制物理世界的能力&#xff0c;被称为继计算机和互联网之后的世界信息产业的第三次浪潮&#xff0c;正在深刻地改变着人类的生存环境和生活方式。据最新报道…

Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(Python)

MXNet源码版本号为1.3.0&#xff0c;其它依赖库的版本号可参考&#xff1a;https://blog.csdn.net/fengbingchun/article/details/84997490 。 为了通过编译源码支持python接口&#xff0c;这里在 https://blog.csdn.net/fengbingchun/article/details/85162936 的基础上对bui…

近段时间学习html和CSS的一些细碎总结

1、边框圆角属性&#xff1a;border-radius&#xff0c;取值能够是 百分比 / 自己定义长度&#xff0c;不能够取负值。假设是圆&#xff0c;将高度和宽度设置相等&#xff0c;而且将border-radius设置为100% 2、IE6&#xff0c;IE7&#xff0c;IE8&#xff0c;opera&#xff0c…

Swift:闭包

[objc] view plaincopy print?/* 闭包&#xff08;Closures&#xff09; * 闭包是自包含的功能代码块&#xff0c;可以在代码中使用或者用来作为参数传值。 * 在Swift中的闭包与C、OC中的blocks和其它编程语言&#xff08;如Python&#xff09;中的lambdas类似。 * 闭包…

Ubuntu下使用CMake编译OpenSSL源码操作步骤(C语言)

OpenSSL的版本为1.0.1g&#xff0c;在ubuntu下通过CMake仅编译c代码不包括汇编代码&#xff0c;脚本内容如下&#xff1a; build.sh内容&#xff1a; #! /bin/bashreal_path$(realpath $0) dir_namedirname "${real_path}" echo "real_path: ${real_path}, di…

从词袋到Transfomer,NLP十年突破史

作者 | Zelros AI译者 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】通过 Kaggle 竞赛视角&#xff0c;观察 NLP 十年发展简史。根据上下文&#xff08;这里指句子的最后一个词&#xff09;&#xff0c;“它”可以指“动物”或“街道”。图源 | Goog…

《千只鹤》--[日]川端康成

《千只鹤》&#xff0c;作者是川端康成 故事梗概&#xff1a; 三谷菊治的父亲是个著名的茶道师匠&#xff0c;他生前与一位叫栗本近子的女人有染&#xff0c;后来又 钟情于太田夫人&#xff0c;而且由于后者而疏远了前者&#xff0c;但前者仍出入于三谷家。在三谷先生去 世四年…

所有接口添加plist文件的写法 swift

第一步 建立plist文件 interface JMTConfigUtils : NSObject /** * 获取配置文件中友盟key * * return NSString */ - (NSString *)umengKey; /** * 微信AppId * * return NSString */ - (NSString *)wxAppId; /** * 微信appSecret * * return NSString */ - (NSString…

提高C++性能的编程技术笔记:标准模板库+测试代码

标准模板库(Standard Template Library, STL)是容器和通用算法的强效组合。 渐近复杂度&#xff1a;算法的渐近复杂度是对算法性能的近似估计。它是算法集到特定性能标准集的映射。如果需要对包含N个整数的向量的所有元素求和&#xff0c;那么每个整数必须且仅需检查一次&…

「创式纪」人工智能应用创新大赛启动,首次结合商业计划和机器学习

谈到人工智能&#xff0c;技术和应用场景成为了大家广泛关注的话题。技术的演进&#xff0c;是推动人工智能发展的核心&#xff0c;而广泛的场景应用&#xff0c;则是人工智能真正价值所在。现阶段&#xff0c;精准营销、信贷风控、人脸比对等为人熟知的AI&#xff0c;已经经过…

linux chattr命令

chattr 设置linux文件的属性 (参照man手册进行翻译&#xff0c;常用的属性都翻译过来&#xff0c;个人觉得很少用到的属性就没有翻译&#xff09; 用法&#xff1a;chattr [ -RVf ] -[acdeijstuADST] files选项&#xff1a;-R 对目录进行递归处理-V 显示详细的输出-F 忽略…

swift 中高德地图随时读取坐标地点的写法

自己写的方法 不比比 自己能看懂就行 只用作自己学习swift的总结 import UIKit typealias block (String,String) ->() class MoveCarViewController: UIViewController,MAMapViewDelegate,AMapLocationManagerDelegate,AMapSearchDelegate,UITextFieldDelegate,UIAler…

万字干货 | Python后台开发的高并发场景优化解决方案

嘉宾 | 黄思涵 来源 | AI科技大本营在线公开课互联网发展到今天&#xff0c;规模变得越来越大&#xff0c;也对所有的后端服务提出了更高的要求。在平时的工作中&#xff0c;我们或多或少都遇到过服务器压力过大问题。针对该问题&#xff0c;本次公开课邀请到了金山办公AI平台研…

提高C++性能的编程技术笔记:引用计数+测试代码

引用计数(reference counting)&#xff1a;基本思想是将销毁对象的职责从客户端代码转移到对象本身。对象跟踪记录自身当前被引用的数目&#xff0c;在引用计数达到零时自行销毁。换句话说&#xff0c;对象不再被使用时自行销毁。 引用计数和执行速度之间的关系是与上下文紧密…

如何提升 CSS 选择器的性能?

CSS选择器对性能的影响源于浏览器匹配选择器和文档元素时所消耗的时间&#xff0c;所以优化选择器的原则是应尽量避免使用消耗更多匹配时间的选择器。而在这之前我们需要了解CSS选择器匹配的机制&#xff0c; 如子选择器规则&#xff1a; #header > a {font-weight:blod;} 我…

百度AI攻坚战:PaddlePaddle中国突围

作者 | 阿司匹林出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;2013年&#xff0c;百度开始研发深度学习框架PaddlePaddle&#xff0c;搜索、凤巢CTR预估上线DNN模型。2016年&#xff0c;在百度世界大会上&#xff0c;百度宣布PaddlePaddle开源&#xff…

提高C++性能的编程技术笔记:编码优化+测试代码

缓存&#xff1a;在现代处理器中&#xff0c;缓存经常与处理器中的数据缓存和指令缓存联系在一起。缓存主要用来存储使用频繁而且代价高昂的计算结果&#xff0c;这样就可以避免对这些结果的重复计算。如&#xff0c;循环内对常量表达式求值是一种常见的低性能问题。 预先计算…

Swift 中使用 SQLite——打开数据库

关于Swift中使用SQLite&#xff0c;接下来可能会分别从打开、增、删、改、查&#xff0c;几个方面来介绍SQLite的具体使用&#xff0c;这一篇重点介绍一下如何打开。 定义全局数据库访问句柄 /// 全局数据库访问句柄 private var db: COpaquePointer nil实现打开数据库函数 …