#include <stdio.h>
#include <stdlib.h>
#define A 18
//二叉树前序遍历序列,深度5,叶子节点
int buffer[20]={10,6,4,-1,-1,8,-1,-1,14,12,3,-1,4,-1,-1,-1,16,-1,-1,-100};
//二叉树结构体
typedef struct binary_tree_node
{
int data;
struct binary_tree_node* ltree;
struct binary_tree_node* rtree;
}Btnode;
//创建新节点
Btnode* create_node(void)
{
Btnode* node;
node=(Btnode*)malloc(sizeof(Btnode));
return node;
}
//据前序序列创建二叉树
/*
明确问题:
(1)何时进行二叉树分支的切换
①左分支遍历到叶子节点时
②右分支有新的节点加入时
(2)何时节点入栈
新加入的非空节点
(3)何时节点出栈
某分支遍历到叶子节点时
*/
Btnode* create_tree(int* buf)
{
Btnode* root;
Btnode* pnode,*temp;
Btnode* s[A];
bool ltree=true;
int index=0;
int m=0;
root=create_node();
root->data=buf[index++];
s[m++]=root;
pnode=root;
while(buf[index]!=-100)
{
if(ltree==true)
{
if(buf[index]==-1)
{
pnode->ltree
二叉树叶子节点遍历---递归与非递归方法求取树深度
最新推荐文章于 2022-12-01 23:25:09 发布