Lintcode---二叉树的前序、中序、后序遍历
给出一棵二叉树,返回其节点值的后序遍历。
给出一棵二叉树 {1,#,2,3}
,
1
\
2
/
3
返回 [3,2,1]
思路:二叉树的后序遍历,简单题目,递归方法,要很快撸出来,非递归方法也要熟悉;
后序遍历:左->右->根
注意,注意,注意! 递归的时候一定要注意定义的变量是否会在每次递归时重新定义;
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Postorder in vector which contains node values.
*/
/*
二叉树的后序遍历,简单题目,递归方法,要很快撸出来,非递归方法也要熟悉;
后序遍历:左->右->根
注意,注意,注意! 递归的时候一定要注意定义的变量是否会在每次递归时重新定义;
*/
public: vector<int> vec;
vector<int> postorderTraversal(TreeNode *root) {
// write your code here
if(root==NULL){
return vec;
}
if(root->left!=NULL){
postorderTraversal(root->left);
} if(root->right!=NULL){
postorderTraversal(root->right);
} vec.push_back(root->val); return vec; }
};
给出一棵二叉树,返回其中序遍历
给出二叉树 {1,#,2,3}
,
1
\
2
/
3
返回 [1,3,2]
.
思路: 中序遍历:左->根->右
非递归方法,也要熟悉;
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Inorder in vector which contains node values.
*/
/*
用递归的方法,二叉树中序遍历,简单题目;
中序遍历:左->根->右
非递归方法,也要熟悉;
*/
public:
vector<int> vec;
vector<int> inorderTraversal(TreeNode *root) {
// write your code here if(root==NULL){
return vec;
} if(root->left!=NULL){
inorderTraversal(root->left);
}
vec.push_back(root->val); if(root->right!=NULL){
inorderTraversal(root->right);
} return vec;
}
};
给出一棵二叉树,返回其节点值的前序遍历。
给出一棵二叉树 {1,#,2,3}
,
1
\
2
/
3
返回 [1,2,3]
.
思路:简单题,递归方法要在五分钟内快速正确的撸出来;
先序遍历:根->左->右
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/ class Solution {
public:
/**
* @param root: The root of binary tree.
* @return: Preorder in vector which contains node values.
*/
/*
简单题,递归方法要在五分钟内快速正确的撸出来;
先序遍历:根->左->右
*/ vector<int> vec;
vector<int> preorderTraversal(TreeNode *root) {
// write your code here
if(root==NULL){
return vec;
} vec.push_back(root->val); if(root->left!=NULL){
preorderTraversal(root->left);
} if(root->right!=NULL){
preorderTraversal(root->right);
} return vec;
}
};
Lintcode---二叉树的前序、中序、后序遍历的更多相关文章
- 分别求二叉树前、中、后序的第k个节点
一.求二叉树的前序遍历中的第k个节点 //求先序遍历中的第k个节点的值 ; elemType preNode(BTNode *root,int k){ if(root==NULL) return ' ...
- 算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序
接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public ...
- 二叉树 遍历 先序 中序 后序 深度 广度 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 前序+中序->后序 中序+后序->前序
前序+中序->后序 #include <bits/stdc++.h> using namespace std; struct node { char elem; node* l; n ...
- SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
- SDUT-2804_数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知一颗二叉树的中序 ...
- 给出 中序&后序 序列 建树;给出 先序&中序 序列 建树
已知 中序&后序 建立二叉树: SDUT 1489 Description 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历 Input 输入数据有多组,第一行是一个整数t (t& ...
- 【C&数据结构】---关于链表结构的前序插入和后序插入
刷LeetCode题目,需要用到链表的知识,忽然发现自己对于链表的插入已经忘得差不多了,以前总觉得理解了记住了,但是发现真的好记性不如烂笔头,每一次得学习没有总结输出,基本等于没有学习.连复盘得机会都 ...
- 【11】-java递归和非递归二叉树前序中序后序遍历
二叉树的遍历 对于二叉树来讲最主要.最基本的运算是遍历. 遍历二叉树 是指以一定的次序访问二叉树中的每个结点.所谓 访问结点 是指对结点进行各种操作的简称.例如,查询结点数据域的内容,或输出它的值,或 ...
- js二叉树,前序/中序/后序(最大最小值,排序)
function Node(data,left,right) { this.left=left this.right=right this.data=data } function Btr() { t ...
随机推荐
- redis源码解析之事件驱动
Redis 内部有个小型的事件驱动,它主要处理两项任务: 文件事件:使用I/O多路复用技术处理多个客户端请求,并返回执行结果. 时间事件:维护服务器的资源管理,状态检查. 主要的数据结构包括文件事件结 ...
- sql server 2012 登录失败出现10048错误
好久没用sql server了,今天登录我的一个数据库中的时候突然登录不了,账号密码没有错,到服务中看的时候看到我那个数据库没有启动,心想启动应该就好了. 然后出现了这个错误,度娘了一下,网上大家的方 ...
- 应用 TransactionScope 报:此操作对该状态的事务无效 的错误
如果在事务过程跨了数据库服务器(即使在同一台服务器上,两个不同的数据库实例也算跨数据库服务器),而使用 TransactionScope 却报:此操作对该状态的事务无效 的错误 是因为没有启用每台服务 ...
- 多线程--Task,等待用户输入AutoResetEvent
上一篇文章:.NET:如何让线程支持超时?已经说明目前微软主推的多线程方案是task: 注意:Task最好引用.NET4.5. 4.0也行,但不成熟.Thread引用2.0就够了. 1.通过构造函数创 ...
- 深入理解Java中为什么内部类可以访问外部类的成员
内部类简介 虽然Java是一门相对比较简单的编程语言,但是对于初学者, 还是有很多东西感觉云里雾里, 理解的不是很清晰.内部类就是一个经常让初学者感到迷惑的特性. 即使现在我自认为Java学的不错了, ...
- [ToDo]Thrift学习
这里有较详细的Java项目配置过程: http://bglmmz.iteye.com/blog/2058785 下面有Java项目的示例介绍: http://www.tuicool.com/artic ...
- python 机器学习中的数据处理学习记录
在机器学习中,选择合适的算法固然重要,但是数据的处理也同样重要.通过对数据的处理,能提高计算效率,提高预测识别精确度等等 以下记录下一些数据处理的方法 一.处理缺失值 对于数据集中有缺失值的,粗暴的方 ...
- 利用pycharm进行重构学习记录
pycharm是非常强大的pythonIDE,集成了很多实用的功能,其中就包括重构Refactor 记录下使用pycharm的重构 pycharm的Refactor默认在主菜单上就有了 Refacto ...
- Scriptable render pipeline unity
https://www.youtube.com/watch?v=zbjkEQMEShM LWRP https://blogs.unity3d.com/cn/2018/02/21/the-lightwe ...
- jquery面向对象写法
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...