我是靠谱客的博主 飞快发带,最近开发中收集的这篇文章主要介绍编写递归算法,求在二叉树中先序序列中第k个位置的节点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

编写递归算法,求在二叉树中先序序列中第k个位置的节点

#include<stdio.h>//freopen()的头文件
#include<malloc.h>
#include<iostream>
using namespace std;
const int N=1000;
struct node{
	char info;
	struct node *llink,*rlink;
};
typedef struct node NODE;
NODE *creat(){   //先序创建树
	char x;
	NODE *p;
      scanf("%c",&x);
	//printf("%c",x);
	if(x!='.')
	{
		p=(NODE *)malloc(sizeof(NODE));
		p->info=x;
		p->llink=creat();
		p->rlink=creat();
	 }
	else
		p=NULL;
	
	return p;
}

char a[N];//注意information是char类型的
int i=1;//主函数和这个函数都要用 放在这个函数之前即可
void run(NODE *t) //先序遍历,然后建立结果存入char a[N]中
{ 
	if(t)
	{
 		a[i] =t->info;
		i++;
		run(t->llink);
		run(t->rlink);
	}
}

main()
{
	NODE *T;
	int k;
	freopen("a.txt","r",stdin);//打开文zhu件//https://blog.csdn.net/yzl_rex/article/details/6892059
	scanf("%d",&k); 
	getchar();//c语言如果自动接受的话会接受一个回车或空格
	
	printf("PLease input a tree:n");
    T=creat();//或者k可以在字符串后面接受
                //T是一个指针

	if(!T)
		printf("This is a empty binary tree.");
	else
	    { 
            printf("第k个位置的节点 is:n ");
		    run(T);
		    printf("%c",a[k]);
		}
     return 0;
}

 

 

 

 

 

最后

以上就是飞快发带为你收集整理的编写递归算法,求在二叉树中先序序列中第k个位置的节点的全部内容,希望文章能够帮你解决编写递归算法,求在二叉树中先序序列中第k个位置的节点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部