[Locked] Binary Tree Vertical Order Traversal
Binary Tree Vertical Order Traversal
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bottom, column by column).
If two nodes are in the same row and column, the order should be from left to right.
Examples:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its vertical order traversal as:
[
[9],
[3,15],
[20],
[7]
]
Given binary tree [3,9,20,4,5,2,7],
_3_
/ \
9 20
/ \ / \
4 5 2 7
return its vertical order traversal as:
[
[4],
[9],
[3,5,2],
[20],
[7]
]
分析:
从根节点出发走的是一左一右或者一右一左的路径到达某节点,那么这个节点的列数可看做0;如果是两左,则为-2;为两右为2。
代码:
void dfs(TreeNode *node, int col, vector<vector<int> > &vleft, vector<vector<int> > &vright) {
    if(!node)
        return;
    //在根节点右边
    if(col > ) {
        //列编号超出了vright边界,则扩展边界
        while(col >= vright.size())
            vright.push_back(vector<int> ());
        vright[col].push_back(node->val);
    }
    //在根节点列左边或者中间
    else {
        //列编号超出了vleft边界,则扩展边界
        while(-col >= vleft.size())
            vleft.push_back(vector<int> ());
        vleft[-col].push_back(node->val);
    }
    dfs(node->left, col - , vleft, vright);
    dfs(node->right, col + , vleft, vright);
    return;
}
vector<vector<int> > verticalorder(TreeNode *root) {
    vector<vector<int> > vleft, vright;
    dfs(root, , vleft, vright);
    //翻转vleft,然后与vright拼接
    reverse(vleft.begin(), vleft.end());
    vleft.insert(vleft.end(), vright.begin() + , vright.end());
    return vleft;
}
[Locked] Binary Tree Vertical Order Traversal的更多相关文章
- [LeetCode] Binary Tree Vertical Order Traversal 二叉树的竖直遍历
		
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
 - LeetCode Binary Tree Vertical Order Traversal
		
原题链接在这里:https://leetcode.com/problems/binary-tree-vertical-order-traversal/ 题目: Given a binary tree, ...
 - LeetCode 314. Binary Tree Vertical Order Traversal
		
原题链接在这里:https://leetcode.com/problems/binary-tree-vertical-order-traversal/ 题目: Given a binary tree, ...
 - [LeetCode] 314. Binary Tree Vertical Order Traversal 二叉树的竖直遍历
		
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
 - Binary Tree Vertical Order Traversal
		
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
 - 314.	Binary Tree Vertical Order Traversal
		
题目: Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to ...
 - [Swift]LeetCode314. 二叉树的竖直遍历 $ Binary Tree Vertical Order Traversal
		
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
 - [leetcode]314. Binary Tree Vertical Order Traversal二叉树垂直遍历
		
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
 - Binary Tree Vertical Order Traversal -- LeetCode
		
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
 
随机推荐
- Web通信中的Get、Post方法
			
首先我们要了解Tomcat,Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选. ...
 - ASP.net MVC 多语言处理
			
MVC多语言处理主要分两部分,一部分是Razor视图中的文字标签内容切换, 另一部分是javascript文件中的文标签内容切换. 这里分这两部分来说. View视图中的比较好做, 思路是使用资源文 ...
 - 完全卸载oracle
			
今天在网上看到有位网友写的篇日志,感觉蛮好的,一般卸载oracle有4个地方需求注意:1)Services,2)software,3eventlog,4)path. 1.关闭 oracle 所有的服务 ...
 - Get file name without extension.
			
Ref:How to get file name without the extension? Normally,there are two ways to implements this:use t ...
 - SQL Server中的死锁
			
简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相关观念有一个理解. 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理 ...
 - asp.net mvc 部署在IIS7.5上出现的[没有相关的源行]错误的解决办法
			
今天在IIS7.5上部署一个MVC小项目的时候出现以下错误:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET File ...
 - gulp-htmlmin可以压缩html的gulp插件
			
通过一条命令用Npm安装gulp-htmlmin: npm install gulp-htmlmin --save-dev 安装完毕后,打开gulpfile.js文件,我们里面编写一个task用来专门 ...
 - node-http-proxy修改响应结果
			
最近在项目中使用node-http-proxy遇到需要修改代理服务器响应结果需求,该库已提供修改响应格式为html的方案:Harmon,而项目中返回格式统一为json,使用它感觉太笨重了,所以自己写了 ...
 - java_设计模式_适配器模式_Adapter Pattern(2016-08-09)
			
概念 将一个接口转换成客户希望的另外一个接口.(该模式使得原本不兼容的类可以一起工作). UML图 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式. (1)对象的适配器模式结构图 (2)类 ...
 - servlet的doPost 和doGet和web文件结构
			
doPost和doGet分别由 tomcat自己来决定调用post 还是get 方式查询 get:url有少量的参数信息,一般用到查询那里 (像百度.. post一般用来提交大文件数据(二进制数据 d ...