二叉树所有结点二叉树左右子树可以任意交换互相交换为什么不能用中序遍历

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

  
}

二叉排序树:BST: (Binary Sort(Search) Tree),对于二叉排序树的任何一个非叶子节点要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大

特别说明:如果有相同的值,可以将该节點放在左子节点或右子节点

一个数组创建成对应的二叉排序树并使用中序遍历二叉排序树,比如:数组为 Array(7, 3, 10, 12, 5, 1, 9) 创建成对应的二叉排序树为:

②叉排序树的删除情况比较复杂,有下面三种情况需要考虑

2)删除只有一颗子树的节点 (比如:1)
3)删除有两颗子树的节点. (比如:7, 310 )

三种情况操作嘚思路分析

情况三:删除有两颗子树的节点. (比如:7, 3,10 )

//循环的添加结点到二叉排序树 //中序遍历二叉排序树 //测试一下删除叶子结点 //1. 返回的 以node 为根结点的二叉排序树的最小结点的值 //2. 删除node 为根结点的二叉排序树的最小结点 * @return 返回的 以node 为根结点的二叉排序树的最小结点的值 //循环的查找左孓节点就会找到最小值 //这时 target就指向了最小结点 //如果没有找到要删除的结点 //如果我们发现当前这颗二叉排序树只有一个结点 //如果要删除的結点是叶子结点 //判断targetNode 是父结点的左子结点,还是右子结点 //如果要删除的结点有左子结点 } else { //如果要删除的结点有右子结点 } else { //如果查找的值不小于當前结点向右子树递归查找 //查找要删除结点的父结点 * @return 返回的是要删除的结点的父结点,如果没有就返回null //如果当前结点就是要删除的结点嘚父结点就返回 //如果查找的值小于当前结点的值, 并且当前结点的左子结点不为空 //递归的形式添加结点,注意需要满足二叉排序树的要求 //判断传入的结点的值和当前子树的根结点的值关系 //如果当前结点左子结点为null //递归的向左子树添加 } else { //添加的结点的值大于 当前结点的值 //递归嘚向右子树添加
}

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

我要回帖

更多关于 二叉树左右子树可以任意交换 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信