二叉树的操作实现
这里的二叉树全部都是用二叉链实现,算法都是一些简单的递归
- 根据二叉树括号表示法字符串str生成对应的二叉树链式存储结构
- 输出二叉树
- 先序遍历、中序遍历、后序遍历
- 销毁二叉树
- 查找值为x的结点
- 求二叉树的高度
- 求二叉树元素的最大值
- 求二叉树结点个数
- 输出所有的叶子结点
- 求二叉树中结点值x的层数
- 求二叉树第k层的结点个数
- 求第k层上叶子结点的个数
- 求二叉树中所有单分支结点个数
- 判断两棵树是否相似
- 输出值为x的结点的所有祖先
- 输出值为x的结点的所有子孙结点
- 判断值为x的结点和值为y的结点是否为兄弟
- 将二叉树b1复制到二叉树b2
- 将二叉树的所有左右子树进行交换
- 判断一颗二叉树是否是完全二叉树
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 typedef char ElemType; 5 typedef struct node 6 { 7 ElemType data; 8 struct node *lchild; 9 struct node *rchild; 10 }BTNode; 11 12 const int MaxSize = 100 + 10; 13 14 //根据二叉树括号表示法字符串str生成对应的二叉树链式存储结构 15 void CreateBTree(BTNode * &b, char *str) 16 { 17 BTNode *St[MaxSize], *p; //St作为顺序栈 18 int top = -1, k,j = 0; //top作为栈顶指针 19 char ch; 20 b = NULL; 21 ch = str[j]; 22 while (ch != '