【leetcode】Binary Tree Level Order Traversal 1&2

来源:互联网 发布:matlab绘制矩阵灰度图 编辑:程序博客网 时间:2024/06/04 20:14

Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7},
这里写图片描述
return its level order traversal as:
这里写图片描述

思路:
建立一个全局变量,深搜的时候,如果dep和当前的res内的size一样的时候,不用创建新的vector,直接res[dep]上增加数据,表示同层的,否则就得增加一个新的vector表示新的一层。

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > res;    void depsearch(TreeNode* root, int dep)    {        if(root==NULL) return;        if(res.size()>dep)        {            res[dep].push_back(root->val);        }        else        {            vector<int> temp;            temp.push_back(root->val);            res.push_back(temp);        }        depsearch(root->left,dep+1);        depsearch(root->right,dep+1);    }    vector<vector<int>> levelOrder(TreeNode* root) {        if(root==NULL) return res;        depsearch(root, 0);        return res;    }};

Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree {3,9,20,#,#,15,7},
这里写图片描述
return its bottom-up level order traversal as:
这里写图片描述
这个就是在上述算法上加一个reverse(ret.begin(), ret.end());

0 0
原创粉丝点击