从上到下打印二叉树-判断是否是二叉搜索树 按照之打印二叉树
//首先找到根节点,然后找到左右子树的序列,然后递归构建左子树和右子树
![fb7458db82a8872726d18a7dff6d7833.png](https://img-blog.csdnimg.cn/img_convert/fb7458db82a8872726d18a7dff6d7833.png)
找到二叉树节点的下一个节点
首先判断空指针问题
如果节点有右子树的话,就找到他的最左子节点
如果没有右子树的话,还不是左子节点,找到他的父节点,使父节点满足,节点是父节点的左子节点,
如果是左子节点,下一个节点就是父节点
![7cbb59831b43d16240ce87c1b51959db.png](https://img-blog.csdnimg.cn/img_convert/7cbb59831b43d16240ce87c1b51959db.png)
3.反转二叉树
//非递归//定义一个栈,来临时存储将要反转的节点,获取栈中存储的节点,这个节点的左右子节点反转,然后这个节点就没用了,删除就行了//将反转后的左右子节点放入栈中,用于下次循环
定义一个栈来临时存储即将反转的节点。获取队列中存储的节点,获取到一个节点后队列中的此节点已无用将其删除,然后把获取到的节点的左右子节点反转,将反转后的左右子节点都放入队列用于下一次循环。重复执行直到反转完所有树节点。
![40fb1f3faa35e109b051b0c8d779611a.png](https://img-blog.csdnimg.cn/img_convert/40fb1f3faa35e109b051b0c8d779611a.png)
4. 从上到下打印二叉树
相当于层次遍历二叉树,用一个队列,把节点放入队列,打印节点的时候,要看他有没有左右节点,如果有,把左右节点也放到里面
![3a60f3896c166df151b92850f4f3f621.png](https://img-blog.csdnimg.cn/img_convert/3a60f3896c166df151b92850f4f3f621.png)
5.利用递归的思想,首先找到根节点,然后找到左子树的序列,找到右子树的序列,如果右子树里面有小于根节点的就不是,然后递归左右子树,
![89bd0a4aa7d7dab46bb2005a1383caa8.png](https://img-blog.csdnimg.cn/img_convert/89bd0a4aa7d7dab46bb2005a1383caa8.png)
按照之打印二叉树
![626b681fd6ccf6bf3f83b3497ede6a3b.png](https://img-blog.csdnimg.cn/img_convert/626b681fd6ccf6bf3f83b3497ede6a3b.png)