2016 - 2024

感恩一路有你

交换左右子树用什么遍历 二叉树中如何交换左右子树?

浏览量:1573 时间:2021-03-11 12:04:14 作者:admin

二叉树中如何交换左右子树?

使用遍历,每次遍历节点时,它都会交换其左右子树voidswap(bnode*root){//遍历bnode*tempif(root)!=null){swap(root->lchild):swap(root->rchild)temp=root->lchild=root->rchildroot->rchildroot->rchildroot->rchild=temp}

根据二叉树的特性,如堆或搜索二叉树,不允许交换左右子树

这取决于二叉树的特性

像堆或搜索二叉树一样,不允许交换左右子树

使用遍历,每次遍历到一个节点,交换它的左右子树

void swap(bnode*root)

{//使用后序遍历

bnode*temp

if(root)!=null)

{

swap(root->lchild)

swap(root->rchild)

temp=root->lchild

root->lchild=root->rchild

root->rchild=temp

}

如果需要转换所有节点的所有左、右子树,则主要有两种方法。深度优先遍历,从根到最小子树的访问解决问题。当所有节点都被访问时,交换就完成了。或者BFS广度优先从根节点依次交换左右子树,访问完所有节点后交换完成。建议使用BFS。逻辑简单易懂,实现简单。排队感觉也比堆积如山好。

二叉树的左右子树可以任意交换吗?

传入树的根节点:exchangelr(&root)//根是树的根节点。Void exchangelr(treenode*root){treenode*TMP if(root==null)return//左子树交换exchangelr(root->left)//右子树交换exchangelr(root->right)//当前节点的左右子树TMP=root->left root->left=root->right root->right=TMP}

交换左右子树用什么遍历 树转化为二叉树的口诀 二叉树怎么按层输出

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。