Binary Tree Level Order Traversal II

Description:

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]

]

Code:

 1  vector<vector<int>> levelOrderBottom(TreeNode* root) {

 2            deque<TreeNode*>a;

 3        deque<TreeNode*>b;

 4        if (root)

 5             a.push_back(root);

 6         

 7        TreeNode*p = NULL;

 8        vector<vector<int>> result;

 9        

10        while (!a.empty() || !b.empty())

11        {

12            vector<int>temp;

13            if (!a.empty() )

14            {

15                 while (!a.empty() )

16                 {

17                p = a.front();

18                a.pop_front();

19                temp.push_back(p->val);

20                if (p->left)

21                     b.push_back(p->left);

22                 if (p->right)

23                     b.push_back(p->right);

24                 }

25                 result.push_back(temp);

26            }

27            else

28            {

29             while (!b.empty())

30            {

31                p = b.front();

32                b.pop_front();

33                temp.push_back(p->val);

34                if (p->left)

35                     a.push_back(p->left);

36                if (p->right)

37                     a.push_back(p->right);

38            }

39            result.push_back(temp);

40            }

41        }

42        reverse(result.begin(),result.end());

43        return result;  

44     }

 

你可能感兴趣的:(binary)