一、二叉树的打印
解题思路:使用递归思路,从根节点依次打印左孩子和右孩子,直至最后一层即可,关键是设计出树的结构,我们先看打印效果:
打印效果相当于一颗平躺的二叉树,顺时针旋转90度,即是一颗我们常见的二叉树,头节点用“H”包裹,左子树用“^”包裹,右子树用“v”包裹。我们固定每个节点的长度len,这里设置的17,然后不足的用空格分别在值的前后均匀补充。
代码如下:
二、打印二叉树的后继节点
解题思路:1.后继节点指的是在二叉树中序遍历中,该节点后面的节点。中序遍历,当前节点是x的最右边节点,则x是当前节点的后继节点。
2.如果有右子树,找到右子树的最左侧节点,即是当前节点的后继节点
如果无右子树,找到父节点,判断当前节点是否是父节点的左孩子,如果是的话,当前节点的父节点即是当前节点的后继节点;如果不是的话,继续向上找,一直到满足条件即可(即当前节点是父节点的左孩子)
代码如下:
三、经典纸张对折
解题思路:自己按照要求对折三次后,发现呈二叉树分布,如图:
使用二叉树的递归套路即可轻易解决。
代码如下:
四、二叉树的递归套路总结
五、递归套路深度实践
题目一
平衡性:左树平衡,右树平衡;左边的子树和右边的子树高度差不超过1
按照如上递归套路,代码如下:
代码如下:
先定义递归的结构体:
递归判断是否平衡树:
题目二:
搜索树:整颗树的节点都不重复,且左边的节点都比右边的节点小;任何一颗子树都是如此。
解题思路:
代码如下:
封装递归的结构体:
递归代码:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/130192.html