C++树状结构

程序员节快乐!
希望大家能够在程序员节中
快乐、高兴地
度过属于自己的节日


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在二叉树的第i层上最多有(2i-1)个节点;
深度为k的二叉树最多有(2k-1)个节点。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如图的二叉树,遍历方式如下:
先序:ABCDEF(根、左、右)
中序:DBEAFC(左、根、右)
后序:DEBFCA(左、右、根)


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//Author:PanDaoxi
#include <iostream>
using namespace std;
struct node{
    
    
	int left,right; //左孩子和右孩子
	char value; //值 
}data[101];
int root=0,cnt; //根节点和记录有效字符
char ch; //输入的数据
//构建二叉树
int buildTree(int bt){
    
     //参数:结点的编号 
	cin>>ch;
	if(ch=='.'){
    
     //判断是否为空结点
		bt=0; //赋值为0 
		return bt; //跳出程序 
	} 
	else{
    
     //非空结点,进行先序遍历 
		bt=++cnt; //构造结点 
		data[bt].value=ch; //存放根的值 
		data[bt].left=data[bt].right=0; //左右孩子都归零 
		data[bt].left=buildTree(bt); //递归左子树
		data[bt].right=buildTree(bt); //递归右子树 
	}
	return bt;  //完成递归 
} 
//后序遍历二叉树
void postorder(int bt){
    
    
	if(bt){
    
     //非空结点 
		//递归输出根 
		postorder(data[bt].left);
		postorder(data[bt].right);
		cout<<data[bt].value;
	}
} 
int main(){
    
    
	root=buildTree(0); //构建二叉树 
	postorder(root); 
	return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/PanDaoxi2020/article/details/120933074