leetCode(22):Binary Tree Level Order Traversal II

来源:互联网 发布:用户数据加密存储模块 编辑:程序博客网 时间:2024/05/20 15:40

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},

    3   / \  9  20    /  \   15   7

return its bottom-up level order traversal as:

[  [15,7],  [9,20],  [3]]

/** * 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>> levelOrderBottom(TreeNode* root) {        queue<TreeNode*> nodes;    vector< vector<int> > result;    vector<int> tmp;    if(NULL==root)    return result;    nodes.push(root);    while(!nodes.empty())    {    int length=nodes.size();    int i=0;    while(i<length)    {//弹出本层所有结点后,跳出循环,length的值在循环时是不会改变的    TreeNode* tmpNode=nodes.front();    tmp.push_back(tmpNode->val);    if(tmpNode->left)    nodes.push(tmpNode->left);    if(tmpNode->right)    nodes.push(tmpNode->right);    nodes.pop();    i++;    }    result.push_back(tmp);    tmp.clear();    }    reverse(result.begin(),result.end());    return result;    }};


又是层序遍历的方式,层序遍历反复出现过多次:求二叉树的最小深度、右侧能看到的结点、统计特殊形式的二叉树结点个数...


0 0
原创粉丝点击