剑指-07 重构二叉树

思路先序遍历:根左右 中序遍历:左根右 后序遍历:左右根根据前序和中序构建树并返回根节点。前序的数组preOrder特点是元素遵循 |根元素|左子树|右子树|;中序的数组inOrder特点为元素遵循 |左子树|根元素|右子树|,因此可以递归以下步骤来构建子树范围 left > right 时返


剑指-34 二叉搜索树中和为某一值的路径

思路二叉搜索树本身包含了元素的排序,左子树的元素 <= 根节点 <= 右子树因为是从根结点到叶子结点的路径之和与指定值k进行对比遍历二叉树,当遍历到叶子结点的时候,判断从根路径到叶子结点的路径和是否和k相等,如果相等则添加该路径路径使用动态数组来存放,每当回退节点的时候去掉最后一个元素值


剑指-28 对称的二叉树

思路对称的定义,根节点相等,左右子树对称,因此可以使用递归遍历递归截止条件1)根节点值相等3)使用两个指针,一个左子树遍历,一个右子树遍历,如果这两个指针始终相等,则表示左右子树是对称的/** * Definition for a binary tree node. * public class T


剑指-27 树的翻转

思路递归翻转左右子树,则可以获取翻转树递归终止条件1)输入的节点为null2)左右子树交换结束/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left;


剑指-26 树的子结构

题目地址思路判断子结构,也就是说可能存三种情况完全和树相同和树的右子树相同和树的左子树相同递归判断/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left


剑指-32 从上到下打印二叉树 III

题目地址思路同上一题的思路,层序遍历+队列确认长度遍历相对上一题多了一个奇偶判断,选择左/右顺序输出,通过数组头插法或者尾插法就可以实现调整输出顺序/** * Definition for a binary tree node. * public class TreeNode { * int


剑指-32 从上到下打印二叉树 Ⅱ

题目地址思路还是层序遍历,但是相对于上一题有所变化。每层的结果单独打印成一行需要记录每层的元素个数,或者可以记录上一行元素个数根据观察,队列每次处理一层的节点前,队列中保留的是该层的所有节点,因此可以在处理队列节点前,通过队列的长度获取上一层的元素节点数目/** * Definition for a


剑指-32 从上到下打印二叉树

题目地址思路:属于二叉树的层序遍历二叉树常见遍历方式:前序遍历,中序遍历,后序遍历,层序遍历等层序遍历需要保证每层遍历的顺序性,每层节点的先后顺序。因此可以利用队列来保存每层节点的顺序性(这里需要记一下队列常用api,add,poll,peek)