随笔分类 -  二叉树

摘要:二叉树中两个节点的最长距离可能有三种情况:1.左子树的最大深度+右子树的最大深度为二叉树的最长距离2.左子树中的最长距离即为二叉树的最长距离3.右子树种的最长距离即为二叉树的最长距离因此,递归求解即可 阅读全文
posted @ 2018-07-10 09:21 樱圃 阅读(508) 评论(0) 推荐(0)
摘要:TreeNode insertNode(TreeNode root,TreeNode node){ if(root == node){ return node; } TreeNode tmp = new TreeNode(); tmp = root; TreeNode last = null;... 阅读全文
posted @ 2018-07-10 09:20 樱圃 阅读(396) 评论(0) 推荐(0)
摘要:TreeNode mirrorTreeNode(TreeNode root){ if(root == null){ return null; } TreeNode left = mirrorTreeNode(root.left); TreeNode right = mirrorTreeNode(root.ri... 阅读全文
posted @ 2018-07-10 09:19 樱圃 阅读(224) 评论(0) 推荐(0)
摘要:TreeNode getLastCommonParent(TreeNode root,TreeNode t1,TreeNode t2){ if(findNode(root.left,t1)){ if(findNode(root.right,t2)){ return root; }else{ ... 阅读全文
posted @ 2018-07-10 09:19 樱圃 阅读(147) 评论(0) 推荐(0)
摘要:boolean isCompleteTreeNode(TreeNode root){ if(root == null){ return false; } Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); bool 阅读全文
posted @ 2018-07-10 09:18 樱圃 阅读(155) 评论(0) 推荐(0)
摘要:题目:给定一棵二叉搜索树,请找出其中的第k大的节点。 思路:如果按照中序遍历的顺序遍历一棵二叉搜索树,遍历序列的数值是递增排序的。因此,只需要用中序遍历算法遍历一棵二叉搜索树,就很容易找出它的第k大节点。 阅读全文
posted @ 2018-07-10 09:16 樱圃 阅读(118) 评论(0) 推荐(0)
摘要:参考链接:https://blog.csdn.net/u013276277/article/details/78575033 题目一:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 题目二:输入一棵二叉树的根节点,判断 阅读全文
posted @ 2018-07-10 00:03 樱圃 阅读(145) 评论(0) 推荐(0)
摘要:题目:输入一棵二叉树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 阅读全文
posted @ 2018-07-09 23:46 樱圃 阅读(104) 评论(0) 推荐(0)
摘要:题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 阅读全文
posted @ 2018-07-09 23:17 樱圃 阅读(110) 评论(0) 推荐(0)
摘要:题目:从上往下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印。--层次遍历。 阅读全文
posted @ 2018-07-09 07:57 樱圃 阅读(90) 评论(0) 推荐(0)
摘要:题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 阅读全文
posted @ 2018-07-09 07:52 樱圃 阅读(110) 评论(0) 推荐(0)
摘要:public void Mirror(Node node){ if(node == null){ return; } if(node.left==null && node.right == null){ return; } Node temp = node.left; ... 阅读全文
posted @ 2018-07-09 07:23 樱圃 阅读(74) 评论(0) 推荐(0)
摘要:题目:输入两个二叉树A和B,判断B是不是A的子结构。 阅读全文
posted @ 2018-07-09 00:43 樱圃 阅读(126) 评论(0) 推荐(0)
摘要:public Node reConstructBinaryTree(int[] pre,int[] in){ if(pre==null || in ==null){ return null; } Node mm = reConstructBinaryTree(pre,in,0,pre.length-1,0,in.length... 阅读全文
posted @ 2018-07-09 00:33 樱圃 阅读(351) 评论(0) 推荐(0)
摘要:一、求二叉树的最大深度 二、二叉树的节点数 三、二叉树中叶子节点个数 四、二叉树第K层节点个数 阅读全文
posted @ 2018-07-09 00:32 樱圃 阅读(512) 评论(0) 推荐(0)
摘要:参考链接:https://blog.csdn.net/u010842515/article/details/68951783 一:前序遍历 递归解法: 非递归解法: 二:中序遍历 递归解法: 非递归解法: 三:后序遍历 四:深度优先遍历 就是前序遍历 五:广度优先遍历 阅读全文
posted @ 2018-07-06 00:09 樱圃 阅读(323) 评论(0) 推荐(0)
摘要:1. 父节点数组下标从0到 n/2 -1 ,但是遍历时要小于n/2-1,因为最后一个父节点可能没有右孩子,当n/2-1为奇数时才有右孩子,为偶数时只有左孩子。 2. 结点左孩子下标为2n+1,右孩子下标为2n+2。 阅读全文
posted @ 2018-07-05 23:03 樱圃 阅读(181) 评论(0) 推荐(0)
摘要:题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路:需要保存下一层需要打印的节点个数。 ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> arrayL 阅读全文
posted @ 2016-09-02 22:13 樱圃 阅读(134) 评论(0) 推荐(0)
摘要:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 阅读全文
posted @ 2016-09-02 21:30 樱圃 阅读(121) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路:此题包含三步: 1. 如果此节点有右子树,下一个节点为右子节点的最左边的节点。 2.如果此节点没有右子树,并且如果此节点是其父节点的左子节点,则下一 阅读全文
posted @ 2016-09-02 16:39 樱圃 阅读(642) 评论(0) 推荐(0)