LintCode_175 翻转二叉树

题目

翻转一棵二叉树

样例
  1         1
 / \       / \
2   3  => 3   2
   /       \
  4         4

和前序遍历代码很相似
从叶子节点依次翻转递归到根节点
C++代码
void invertBinaryTree(TreeNode* root)
{
	stack<TreeNode*> s;
	TreeNode* p = root;
	while (p || !s.empty())
	{
		while (p)
		{
			s.push(p);
			p = p->left;
		}
		TreeNode* pa = s.top();
		TreeNode* left = pa->left;
		TreeNode* right = pa->right;
		pa->left = right;
		pa->right = left;
		p = pa->left;
		s.pop();
	}
}

  

 
posted @ 2016-05-04 01:23  红岸的电波  阅读(181)  评论(0编辑  收藏  举报