文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java四则运算和二叉树的关系是什么

2023-07-05 22:23

关注

今天小编给大家分享一下java四则运算和二叉树的关系是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

引言

前几天忽然想到了四则运算和二树有没有关系,然后在网络上检索了一下,发现还真的有四则运算和二叉树。

因为总是见到把 四则运算表达式 的形式来展示,所以就想着给定一颗表达式树,计算它的结果出来。

这里是我待会会用到的三颗表达式树,下面是它的表达式:

1
1+2
(6/2)+(2*(9-10)

这里我设计一个简单的数据结构,一个普通的节点如下:

一个 root 节点,表示树的根。然后是下面的子节点。kind 的类型为 INT、ADD、MIN、MUL 和 DIV。即整数、+、-、* 和 /。然后是 value,它只有在 kind 为 INT 时有意义。然后是 left 和 right,左右子节点,如果有的话,就一直这样递归表示下去。

{    "root": {        "kind": "INT",        "value": 1    }},{    "root": {        "kind": "ADD",        "value": "+",        "left": {            "kind": "INT",            "value": 1        },        "right": {            "kind": "INT",            "value": 2        }    }},

java四则运算和二叉树的关系是什么

from typing import Dict, Uniondef computer(tree: Dict[str, Union[str, int, Dict[str, int]]]) -> int:    if not tree:        return 0    kind = tree.get("kind")    value = tree.get("value")    print(f"{kind} ==> {value}")    if kind == 'INT':        return value  # type: ignore    left_val = computer(tree.get("left"))  # type: ignore    right_val = computer(tree.get("right"))  # type: ignore    if kind == 'ADD':        return left_val + right_val    elif kind == 'MIN':        return left_val - right_val    elif kind == 'MUL':        return left_val * right_val    elif kind == 'DIV':        return left_val // right_val    else:        print(type)        raise Exception("unexcepted operator")if __name__ == "__main__":    # 测试的树    test_trees = [        {            "root": {                "kind": "INT",                "value": 1            }        },        {            "root": {                "kind": "ADD",                "value": "+",                "left": {                    "kind": "INT",                    "value": 1                },                "right": {                    "kind": "INT",                    "value": 2                }            }        },        {            "root": {                "kind": "ADD",                "value": "+",                "left": {                    "kind": "DIV",                    "value": "/",                    "left": {                        "kind": "INT",                        "value": 6                    },                    "right": {                        "kind": "INT",                        "value": 2                    }                },                "right": {                    "kind": "MUL",                    "value": "*",                    "left": {                        "kind": "INT",                        "value": 2                    },                    "right": {                        "kind": "MIN",                        "value": "-",                        "left": {                            "kind": "INT",                            "value": 9                        },                        "right": {                            "kind": "INT",                            "value": 10                        }                    }                }            }        }    ]    # 计算    for test_tree in test_trees:        print(computer(test_tree["root"]))        print()

输出结果:

java四则运算和二叉树的关系是什么

以上就是“java四则运算和二叉树的关系是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯