用python画一棵树?

用python画一棵树?,第1张

1、准备

1

打开我们的Python shell界面,也就是大家所说的idle界面。

2

单击界面中的“file”-“new file”,就可以建立一个Python脚本了。

END

2、保存脚本文件

1

单击脚本文件中工具栏的“file”-“save”就可以实现我们调出我们的保存配置界面了。

2

在该界面中配置我们的文件名和要保存的路径就可以了。

END

3.编写代码

1

1.代码的结构:

本代码有两个子函数组成,据图有main函数和画树函数组成。

2

2.编写画树函数:

画树函数,就是用来画出我们的树的一种子函数,代码如下:

def tree(plist,l,a,f):

if l>5:

lst=[]

for p in plist:

p.forward(l)

q=p.clone()

p.left(a)

q.right(a)

lst.append(p)

lst.append(q)

tree(lst,l*f,a,f)

3

3.编写main函数:

main函数用来对画树的总体的配置,来画出我们整体的书代码如图下。

def main():

p=Turtle()

p.color('green')

p.pensize(11)

p.hideturtle()

p.speed(4)

#    p.getscreen().tracer(30,0)

p.left(90)

p.penup()

p.goto(0,-100)

p.pendown()

t=tree([p],110,65,0.6375)

4

4.调用main函数:

在Python语言中与其它的语言不同的是,我们得在脚本中说明我们的主函数,而不是默认的main函数,具体如下。

main()

END

4、执行代码

单击“run”-“run module”,就可以运行我们的代码了。

接着就可以看到我们的运行界面了。

刚刚回答了一个类似的问题,以下代码供参考:

#include "stdio.h"

#include "stdlib.h"

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef char TElemType

typedef int Status

typedef struct BiTNode { // 结点结构

TElemType data

struct BiTNode *lchild, *rchild

// 左右孩子指针

} BiTNode, *BiTree

//以下是建立二叉树存储结构,空节点输入作为#结束标识

Status CreateBiTree(BiTree &T) {

//请将该算法补充完整,参见第6章课件算法或课本

char ch

scanf("%c",&ch)

if(ch=='#') T=NULL

else{

if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))

exit(OVERFLOW)

T->data=ch

CreateBiTree(T->lchild)

CreateBiTree(T->rchild)

}

return OK

} // CreateBiTree

void Preorder(BiTree T)

{

if(T)

{

printf("%c",T->data)

Preorder(T->lchild)

Preorder(T->rchild)

}

}

void Inorder(BiTree T)

{ // 中序遍历二叉树

//请将该算法补充完整,参见第6章课件算法

if(T)

{

Inorder(T->lchild)

printf("%c",T->data)

Inorder(T->rchild)

}

}

void Postorder(BiTree T)

{ // 后序遍历二叉树

//请将该算法补充完整,参见第6章课件算法

if(T)

{

Postorder(T->lchild)

Postorder(T->rchild)

printf("%c",T->data)

}

}

//以下是求叶子结点数

void CountLeaf(BiTree T,int&count){

//请将该算法补充完整,参见第6章课件算法

if(T){

if((!T->lchild)&&(!T->rchild))

count++

CountLeaf(T->lchild,count)

CountLeaf(T->rchild,count)

}

}

//以下是求二叉树的深度

int Depth(BiTree T ){

//请将该算法补充完整,参见第6章课件算法

int depthval,depthLeft,depthRight

if(!T) depthval=0

else{

depthLeft = Depth(T->lchild)

depthRight = Depth(T->rchild)

if(depthLeft>depthRight)depthval = 1+depthLeft

else depthval = 1+depthRight

}

return depthval

}

void main(){

BiTree T

int s=0,d

printf("\n creat of the bitree:\n")

CreateBiTree(T)

printf("\n output result of Preorder:\n")

Preorder(T)

CountLeaf(T,s)

d=Depth(T)

printf("\n leaves=%d\n",s)

printf("\n depth=%d\n",d)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7843238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存