二叉树递归算法的关键要明确函数的定义,相信这个定义,而不要跳进递归细节。写二叉树的算法题,都是基于递归框架的,我们先要搞清楚root节点它自己要做什么,然后根据题目要求选择使用前序,中序,后续的递归框架。二叉树题目的难点在于如何通过题目的要求思考出每一个节点需要做什么,这个只能通过多刷题进行练习了。二叉树遍历框架:/* 二叉树遍历框架 */voidtraverse(TreeNoderoot){// 前序遍历traverse(root.left)// 中序遍历traverse(root.right)// 后序遍历}1,2,3,4,5,6,7前序遍历:先输出父节点,再遍历左子树和右子树。1, 2, 4, 5, 3, 6, 7中序遍历:先遍历左子树,在输出父节点,再遍历右子树。4, 2, 5, 1, 6, 3, 7后序遍历:先遍历左子树,再遍历右子树,最后输出父节点。4, 5, 2, 6, 7, 3, 1镜像翻转二叉树剑指 Offer 27. 二叉树的镜像这个函数的定义就是给我一个节点,我把他的左右子节点翻转 只去想一个节点翻转需要怎么做,这是一个二叉树的前序遍历publicTreeNodeinvertTree(TreeNoderoot){if(root==null){returnroot;}//翻转TreeNodetempNode=root.left;root.left=root.r
...
继续阅读
(110)