二叉树
好好先生_山楂树
爱好广泛,想当TA
展开
-
C/C++递归算法,将二叉树中所有结点的左,右子树相互交换
关键思想:将大问题转换为小问题,先从树梢开始交换即树的叶子到树根。 关键代码: void changeTree(BiTree& T)//交换左右子树 { if (T) { if (T->lchild || T->rchild)//判断该结点是否存在左右子树 { changeTree(T->lchild);//先转换左子树的左右子树 changeTree(T->rchild);//再转换右子树的左右子树 BiTree temp;//最后转换自原创 2021-11-02 21:56:13 · 1901 阅读 · 0 评论 -
C/C++递归算法,计算二叉树中叶子结点的数目
关键思路:叶子结点的度为0,即没有左孩子和右孩子 关键代码: int searchNum(BiTree T) { if (!T) return 0; else { int l, r; l=searchNum(T->lchild); r=searchNum(T->rchild); if ((l == 0 && r == 0))//判断是否遍历到度为0及叶子结点 number++; return 1; } } 代码实现: 头文件的实现原创 2021-11-02 21:41:51 · 1774 阅读 · 0 评论 -
C/C++ 递归算法,在二叉树中求位于先序序列中第k个位置的结点
基本的代码 前期准备(创建二叉树) status creatTree(BiTree& T) { TElemType m; scanf_s("%c", &m); if (m == ' ')//若输入的为空格则表示该结点为空 { T = NULL; return ERROR; } else { T = (BiTree)malloc(sizeof(BiTNode));//开辟空间 T->data = m;//赋值 creatTree(T->lch原创 2021-11-01 22:10:40 · 1100 阅读 · 0 评论