Javascript递归绘制二叉树

 

<html>
    <head>
        <title>标准二叉树</title>
    </head>
    <body>
<!--        svg元素-->
        <svg id ="mySvg" width = 800 height = 600></svg>
        
        <script>
            //获取屏幕宽度
            var w = window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;
            
            //获取屏幕高度
            var h = window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;
            
            //设置变量mysvg获取svg元素
            var mysvg = document.getElementById("mySvg");
            
            //修改SVG的宽度
            mysvg.setAttribute("width",w*0.9);
            
            //修改SVG的高度
            mysvg.setAttribute("height",h*0.9);
       
            //起始长度
            var length = 200;
            
            //衰减系数
            var rate = 0.6;
            
            //第一截线段的起点为x0为屏幕一般,y0为屏幕底端
            var x0 = w/2;
            var y0 = h;
            
            //迭代次数
            var count = 7;
            
            //我没搞懂iter的作用是什么
            var iter = 0;
           
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您演示递归二叉树的方法。首先,我们需要确定二叉树的深度和分支角度,可以定义一个函数来实现这个功能。接下来,我们可以使用递归方法来绘制二叉树。 以下是一个Python实现的例子: ```python import turtle def draw_tree(branch_len, angle, t): if branch_len > 5: t.forward(branch_len) t.right(angle) draw_tree(branch_len-15, angle, t) t.left(angle*2) draw_tree(branch_len-15, angle, t) t.right(angle) t.backward(branch_len) def main(): t = turtle.Turtle() my_win = turtle.Screen() t.left(90) t.up() t.backward(100) t.down() t.color("green") draw_tree(75, 30, t) my_win.exitonclick() main() ``` 在这个例子中,我们定义了一个 `draw_tree` 函数,它使用递归方式来绘制二叉树。函数接受三个参数:`branch_len` 表示当前分支的长度,`angle` 表示分支的角度,`t` 表示我们使用的海龟对象。 函数首先判断当前分支的长度是否大于 5,如果是,就按照一定的角度向前移动一定距离,然后再递归调用 `draw_tree` 函数来绘制左右子树。绘制完左右子树后,海龟对象再向右转回原来的角度,退回到原来的位置,然后再向后退回原来的长度,以便绘制下一个分支。 在 `main` 函数中,我们创建了一个海龟对象 `t`,然后设置海龟的初始位置和颜色,最后调用 `draw_tree` 函数来绘制二叉树。 您可以将上面的例子复制到 Python 解释器中执行,或者保存到一个文件中运行。希望这个例子能够帮助您理解如何使用递归绘制二叉树
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值