LCA(最近公共祖先)问题
- 顺序存储方式
1 | ElemType LeastCommonAncestor(SqTree T,int i,int j){ |
- 二叉链表存储方式
1 | BiNode *LeastCommonAncestor(BiNode * T,BiNode * p,BiNode * q){ |
二叉树计数问题
下面几个小算法二叉树全部用二叉链表存储
- 叶子结点数
1 | int LeafCount(BiTree T){ |
- 二叉树深度(递归算法,非递归见8)
1 | int BiTreeDepth(BiTree T){ |
- 二叉树结点总数
1 | int BiTreeNode(BiTree T){ |
- 二叉树中度为1的结点个数
1 | int BiTreeDegree1(BiTree T){ |
- 二叉树中度为2的结点个数
1 | int DsonNode(BiTree T){ |
- 给定结点总数,统计所有可能的二叉树个数(即卡特兰数)
1 | int Probable(int n){ |
- 给定前序和后序,判断可能的二叉树个数
1 | int ComputeDiffTreeNum(String &str1,String &str2){ |
- 二叉树深度的非递归算法
本算法还可用于求二叉树的宽度
1 | int BiTreeDepth(BiTree T){ |
参考书籍
-
严蔚敏,吴伟民.数据结构:C语言版[M].北京:清华大学出版社.2007.
-
王道论坛.2019年数据结构考研复习指导[M].北京:电子工业出版社.2018.