Binary Tree Level Order Traversal II

来源:互联网 发布:安卓听书软件 编辑:程序博客网 时间:2024/04/28 08:04

题目描述:

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]]


思路:先层序遍历二叉树,再将得到的结果翻转。


代码:

vector<vector<int> > levelOrderBottom(TreeNode *root) {    vector<vector<int> > result;    vector<int> sequence;    TreeNode * flag = new TreeNode(0);    queue<TreeNode *> treenode_queue;    if(root == NULL)        return result;    treenode_queue.push(root);    treenode_queue.push(flag);    while(treenode_queue.size() >= 1)    {        TreeNode * node = treenode_queue.front();        treenode_queue.pop();        if(node == flag)        {            result.push_back(sequence);            sequence.clear();            if(treenode_queue.empty())                break;            treenode_queue.push(flag);        }        else        {            sequence.push_back(node->val);            if(node->left != NULL)                treenode_queue.push(node->left);            if(node->right != NULL)                treenode_queue.push(node->right);        }    }    reverse(result.begin(),result.end());    return result;    }


0 0
原创粉丝点击