码迷,mamicode.com
首页 > 其他好文 > 详细

Binary Tree Level Order Traversal II

时间:2014-10-05 23:07:59      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:leetcode   算法   

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]
]
点击打开原题链接

跟从上往下层次遍历一样,最后把结果倒置一下就可以了~~


struct node
 {
	 TreeNode* tn;
	 int level;
 };
	
	class Solution 
	{
	public:
		vector<vector<int> > levelOrderBottom(TreeNode *root) 
		{
			vector<vector<int> > vvi;
			vector<int> vi;
			deque<node> di;
			node nd;
			int level = 0;
			if (root == NULL)
			{
				return vvi;
			}
			nd.level = 0;
			nd.tn = root;
			di.push_back(nd);
			node left,right;
			while (!di.empty()) 
			{
				nd = di.front();
				if (nd.tn->left != NULL)
				{
					left.tn = nd.tn->left;
					left.level = nd.level+1;
					di.push_back(left);
				}
				if (nd.tn->right != NULL)
				{
					right.tn = nd.tn->right;
					right.level = nd.level + 1;
					di.push_back(right);
				}
				// if (vi.empty())
				// {
				// 	vi.push_back(nd.tn->val);
				// 	level++;
				// 	di.pop_front();
				// }
				// else 
				// {
					nd = di.front();
					if (nd.level == level)
					{
						vi.push_back(nd.tn->val);
						di.pop_front();
					}
					else
					{
						vvi.push_back(vi);
						vi.clear();
						vi.push_back(nd.tn->val);
						level++;
						di.pop_front();
					}
			//	}
			}
			vvi.push_back(vi);
			
			return vector<vector<int> >(vvi.rbegin(),vvi.rend());
		}
		
	};


Binary Tree Level Order Traversal II

标签:leetcode   算法   

原文地址:http://blog.csdn.net/hongkangwl/article/details/39806435

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!