本文主要是介绍二叉树链表实现的各种算法(递归),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
<strong>二叉树链表递归的实现都是以3种遍历为基础的</strong>/** 二叉树深度的递归算法 */
int depth(BTree root)
{
int ldepth,rdepth;
if(!root) return 0;
else{
ldepth = depth(root->lchild);
rdepth = depth(root->rchild);
return ldepth>rdepth?ldepth+1;rdepth+1;
}
}
void DestroyBiTree(BiTree &T){ // 初始条件: 二叉树T存在。操作结果: 销毁二叉树Tif(T) // 非空树{if(T->lchild) // 有左孩子DestroyBiTree(T->lchild); // 销毁左孩子子树if(T->rchild) // 有右孩子DestroyBiTree(T->rchild); // 销毁右孩子子树free(T); // 释放根结点T=NULL; // 空指针赋0}}
二叉树的销毁必须使用后序遍历
求叶子结点数[cpp] view plaincopyint get_num_of_leave(bitree bt) { if (!bt) return 0; else if (!bt->lchild && !bt->rchild) return 1; else return (get_num_of_leave(bt->lchild) + get_num_of_leave(bt->rchild)); }
递归交换二叉树的子女
/交换二叉树的左右子女
void exchangeChild(BiTree &T)
{ if(T) { BiTree temp = NULL; if(T->lchild ||T->rchild) { temp = T->lchild; T->lchild = T->rchild; T->rchild = temp; exchangeChild(T->lchild); exchangeChild(T->rchild); } }
}
这篇关于二叉树链表实现的各种算法(递归)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!