已知二叉树采用二叉链表存储结构,编写算法交换二叉树的所有左子树与右子树的位置

用c语言编写,能给出具体的程序最好,哈哈,先谢谢啦···
2024-11-25 18:30:13
推荐回答(2个)
回答1:

f(Node* root,Node* child)
{
if (root==child) {output the stack;return;}
if (root->left) {
stack.push(root->left);
f(root->left,child);
stack.pop();
}
if (root->right) {
stack.push(root->right);
f(root->right,child);
stack.pop();
}
}

void main()
{
stack.push(root);
f(root,child);
}
程序没检测,就是这个大概意思,路径要用堆栈来保存!!

回答2:

不用堆栈,用递归。

recursion function:

public void exchange(Node root) {
if(root==null) return;
else {
Node temp = exchange(root.right);
root.right = exchange(root.left);
root.left = temp;
}
}

比用堆栈容易写些