数据结构4-树(二叉搜索树、平衡二叉树)

1.二分查找法(引例)

图示:

 代码:

//二分查找法
int BinarySearch(PStaticTable PST, int x) {
	int mid, right, left;
	left = 1;
	right = PST->length;
	while (left <= right) {
		mid = (left + right) / 2;
		if (PST->Element[mid] < x) {
			right = mid-1;
		}
		else if (PST->Element[mid] > x) {
			left = mid+1;
		}
		else {
			return mid;
		}
	}
	return NULL;
}

2.树

1.一些基本术语

1.节点的度:节点子树个数

2.树的度:树中所有节点中最大的度数

3.叶节点

4.父节点

5.子节点

6.兄弟节点

7.路径和路径长度:路径是指所包含的节点,路径长度是指所包含的边数

8.节点的层级:根节点的层次是0,其他各节点是其父节点+1

9.树的深度:这棵树上最大的层次

10.树的高度:叶子节点的高度为0,其父节点的高度为子节点+1

2.二叉树的表示:

typedef struct TNode* Position;
typedef Position BinTree;
struct TNode {
	ElementType Data;
	BinTree left;
	BinTree right;
};

几种特殊二叉树

1.斜二叉树                                               

2.完全二叉树

 3.完美二叉树(满二叉树)

3.二叉树的遍历:


1.前序遍历

void PreOrderTraversal(BinTree BT) {
	while (BT) {
		cout << BT->Date;
		PreOrderTraversal(BT->left);
		PreOrderTraversal(BT->right);
	}
}

2中序遍历

void OrderTraversal(BinTree BT) {
	while (BT) {
		PreOrderTraversal(BT->left);
		cout << BT->Date;
		PreOrderTraversal(BT->right);
	}
}

(中序遍历非递归方式,利用堆栈)

3.后序遍历

void PostOrderTraversal(BinTree BT) {
	while (BT) {
		PreOrderTraversal(BT->left);
		PreOrderTraversal(BT->right)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值