欢迎光临散文网 会员登陆 & 注册

树与每日一题

2023-03-31 18:39 作者:不要学经管  | 我要投稿

今天学习了树的遍历,对于中序遍历函数,它能够输出表达式的完全括号表达式形式,即:

由于是我自用的,就不写buildParseTree()的具体代码了,总之,它是一个将字符串转化为二叉树的函数。上述代码的输出为:'((3)+((4)*(5)))'

现在,我学习的教材中提出了如何将数字外面的括号删掉,即最后的输出形式应该是:'(3+(4*5))',因为它们是没必要的,正好今天就拿此作为练手题,经过我们人脑去“跑”一下代码后,我们可以发现,只需要加一段判断的代码来确定父节点是否为数字,如果是的话,就不需要+括号,具体代码如下:

判断方法有两种,一种是判定它的子节点是否都是None,另一种是判断这个父节点的值是否为数字,我比较喜欢第二种,因为直击主题。总之,很简单,最后的输出为:'(3+(4*5))'。

然后,又进行了每日一题:


Leetcode每日一题

看到这道题的第一反应就是转换为2进制,然后利用栈储存每次除2的余数,具体代码如下:

可能不是最优的方法,但有意识地使用学到了的数据结构也是一种进步。




树与每日一题的评论 (共 条)

分享到微博请遵守国家法律