给定一棵二叉树,使用非递归的方式实现二叉树左右子树交换,并输出后序遍历结果。
时间: 2024-05-06 09:16:04 浏览: 5
好的,这个问题可以使用迭代的方法实现二叉树的左右子树交换。具体的实现方法是,从根节点开始,将左右子树进行交换,然后将左子树压入栈中,再将右子树压入栈中。之后从栈中弹出一个节点,进行相同的交换操作,直到栈为空为止。最后输出后序遍历结果即可。
代码如下:
```
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def invertTree(root: TreeNode) -> TreeNode:
if not root:
return None
stack = [root]
while stack:
node = stack.pop()
if node:
node.left, node.right = node.right, node.left
stack.append(node.left)
stack.append(node.right)
return root
def postorderTraversal(root: TreeNode) -> List[int]:
if not root:
return []
stack = [root]
res = []
while stack:
node = stack.pop()
if node:
res.append(node.val)
stack.append(node.left)
stack.append(node.right)
return res[::-1]
```
你可以输入一个二叉树的根节点,调用 invertTree 函数进行左右子树的交换。最后再调用 postorderTraversal 函数输出后序遍历的结果。