首页 > 数据库 >[Oracle] LeetCode 314 Binary Tree Vertical Order Traversal

[Oracle] LeetCode 314 Binary Tree Vertical Order Traversal

时间:2022-10-27 02:44:05浏览次数:47  
标签:Binary right TreeNode Vertical int Tree row col left

Given the root of a binary tree, return the vertical order traversal of its nodes' values. (i.e., 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.

Solution

我们用 \(map\) 套 \(map\) 套 \(vector\) 来储存每个 \(row, col\) 的节点值,因为对于左节点等价于: \(row+1, col-1\).

那么我们对树进行 \(DFS\), 然后再对 \(map\) 进行遍历即可

点击查看代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
private:
    vector<vector<int>> ans;
    map<int, map<int, vector<int>> >mp;
    
    void dfs(TreeNode* rt, int row,int col){
        if(!rt) return;
        mp[col][row].push_back(rt->val);
        dfs(rt->left, row+1, col-1);
        dfs(rt->right, row+1, col+1);
    }
    
public:
    vector<vector<int>> verticalOrder(TreeNode* root) {
        dfs(root, 0,0);
        for(auto ele:mp){
            vector<int> tmp;
            for(auto m2:ele.second){
                for(auto ele2:m2.second)tmp.push_back(ele2);
            }
            ans.push_back(tmp);
        }
        return ans;
    }
};

标签:Binary,right,TreeNode,Vertical,int,Tree,row,col,left
From: https://www.cnblogs.com/xinyu04/p/16830715.html

相关文章

  • 2022 年上海市大学生程序设计竞赛 - 十月赛 B. Questions on Binary Tree
    给定一棵n个节点的完全二叉树以及m次询问,每次询问需要计算给定节点在先序遍历的顺序。思路就是从给定的节点不断向上跳,如果当前节点是左儿子则给答案+1,是右儿子则给答案+1......
  • CF1092F Tree with Maximum Cost
    题目链接:​​传送门​​是​​这个题​​​的一个变形就是最小值改成最大值懒了直接改了改当时的代码当时的题解里也有解析#include<iostream>#include<cstdio>#inclu......
  • C编程辅导:CS101 Binary Arithmetic
    原文链接:tecdat.cn/?p=29620RequirementInthisAssignment,youshouldwriteaprogramthatallowstheusertoperformsimplearithmeticinbinary.Uponstartin......
  • CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
    CF741DArpa’sletter-markedtreeandMehrdad’sDokhtar-koshpaths给定一颗以\(1\)为根的树每个节点上有一个\(a\simv\)的小写字母,求每个子树内最长的链的长度......
  • web技术分享| 虚拟 tree
    查了好久,觉得使用AntDesignVue中的Tree树形控件因项目需求,节点的移动不通过拖拽移动,需要通过弹窗实现节点的移动,因此基于添加、删除实现。当前仅使用节点添加、删除......
  • web技术分享| 虚拟 tree
    查了好久,觉得使用AntDesignVue中的Tree树形控件因项目需求,节点的移动不通过拖拽移动,需要通过弹窗实现节点的移动,因此基于添加、删除实现。当前仅使用节点添加、删......
  • 7.TreeMap源码解析
    1.数据结构TreeMap的底层数据结构是红黑树,和HashMap的红黑树结构一样。不同的是,TreeMap利用红黑树左节点小,右节点大的性质,根据key进行排序,使每个元素能够插入到红黑树的适......
  • 2.9 复制文件和文件夹 shutil模块 shutil.copy shutil.copytree
    #复制文件:shutil.copy(要复制的文件,要复制文件的位置)#复制文件夹:shutil.copytree(要复制的文件夹,要复制文件夹的位置)-----------------------------------------......
  • PriorityQueue 最小堆&& treemap
    优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素)。这里牵涉到了大小关系,元素大小的评判可以通过元素本身的自然顺序(naturalorder......
  • Codeforces 1682 D Circular Spanning Tree
    题意1-n排列,构成一个圆;1-n每个点有个值0或者1,0代表点的度为偶数,1代表点的度为计数;询问能否构成一棵树,树的连边在圆内不会相交,在圆边上可以相交,可以则输出方案。提示1.......