数据结构-单支二叉树

简介:

在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
而然单链二叉树是指仅最左侧节点存在孩子节点,如下图所示。结果会导致二叉树很不平衡,但是实现比较简单。
在这里插入图片描述

C语法实现:
#include<bits/stdc++.h>
using namespace std;

typedef struct Node{
 	int data;
 	Node *parent;
 	Node *left, *right;
}*Tree;

void init_node(Tree &n){
 	n = new Node;
 	n->parent = NULL;
 	n->left = NULL;
 	n->right = NULL;
}
void init_tree(Tree &r){
 	init_node(r);
 	r->data = -1;
}
Tree insert_node(Tree &p, Tree &n){
 	Tree temp;
 	n->parent = p;
 	if(p->left){
  		p->right = n;
  		return p->left;
 	} else {
  		p->left = n;
  		return p;
 	}
}
Tree insert_num(Tree &p, int num){
 	Tree n;
 	init_node(n);
 	n->data = num;
 	return insert_node(p, n);
}
void print_tree_left(Tree &n){//递归版
 	if(n == NULL) return;
 	cout << n->data << endl;
 	print_tree_left(n->left);
}
void print_tree_right(Tree &n){
 	if(n->right == NULL) return;
 	cout << n->right->data << endl;
 	print_tree_right(n->left);
}

int main(){
 	Tree r, p;
 	init_tree(r);
 	p = r;
 	for(int i = 1; i < 10; i++){
  		p = insert_num(p, i);
 	}	
 	print_tree_left(r);
 	print_tree_right(r);
 	return 0;
}

单链二叉树因为其节点插入的问题,导致数结构极不平衡,但是实现比较简单,因此可以作为向复杂树编码的过渡。

树的深度
int get_tree_height(Tree &n){//获得任意节点子树的高度 
 	int height = 1;
 	for(Tree i = n->left; i; i = i->left)
  		height++;
 	return height;
}
树的遍历
void print_tree_interation_left(Tree &n){//迭代版
 	for(Tree i = n; i->left != NULL; i = i->left)
  		cout << i->left->data << endl;
}
void print_tree_interation_right(Tree &n){
 	for(Tree i = n; i->right != NULL; i = i->left)
  		cout << i->right->data << endl;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值