题目
翻转一棵二叉树
样例
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();
}
}
本文介绍了一种使用栈结构实现的翻转二叉树算法,并提供了C++代码示例,该方法从叶子节点开始逐层翻转,直至根节点,确保了树的正确翻转。
350

被折叠的 条评论
为什么被折叠?



