leetcode-tree
kainever
这个作者很懒,什么都没留下…
展开
-
Validate Binary Search Tree
写道Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node's key. The原创 2015-07-25 22:15:00 · 233 阅读 · 0 评论 -
Binary Tree Maximum Path Sum
题目:Given a binary tree, find the maximum path sum.The path may start and end at any node in the tree. Binary Tree Maximum Path Sum – LeetCode 解题思路: 1. 设一个max的全局变量记录遍历过程中的最大值 2. 对于任意node,计算出它两棵子树中的最长原创 2015-08-05 21:31:46 · 368 阅读 · 0 评论 -
Binary Tree Right Side View
题目:Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.解题思路: 1. 右子树的高度 >= 左子树 , easy ; 2. 左子树 > 右子树?原创 2015-08-04 21:39:29 · 288 阅读 · 0 评论 -
Binary Search Tree Iterator
题目:写一个BST遍历器 1. 初始化遍历器 2. next() will return the next smallest number in the BST 3. next() and hasNext() should run in average O(1) time and uses O(h) memory, where h is the height of原创 2015-08-04 20:48:38 · 310 阅读 · 0 评论 -
Count Complete Tree Nodes(****)
题目:计算完全二叉树的节点个数思路: 1. 不是暴力解决,那样太简单了,遍历一次即可 2. 因为是完全二叉树,所以: - 满二叉树的节点 = 2^k-1 k为高度 - 完全二叉树中一定有子树为满二叉树public class Solution { public int countNodes(TreeNode root) { if(root == null原创 2015-08-12 21:58:30 · 354 阅读 · 0 评论 -
Lowest Common Ancestor of a Binary Tree(***)
题目:求二叉树的最近公共子祖先 , 注意这里不是BST解题思路: 求LCA of BT , 就三种情况: 1. p ,q 为root的左右子树中的节点 == > return root; 2. p q 在root的一棵子树中 ,p为父辈 ==> return p; 3. q为父辈 ==> return q; 所以,实际就是一个遍历的过程,只是在遍历的时候,加一些判断的操作!public c原创 2015-08-13 20:57:08 · 350 阅读 · 0 评论 -
树的层序遍历(深度优先 和 队列)
题目: Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).DFS算法:public List<List<Integer>> levelOrderBottom(Tr原创 2015-08-09 11:16:51 · 621 阅读 · 0 评论 -
LCA in BST
题目:Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.思路: 两节点 p , q , 分多中情况考虑, 因为是BST, 如果 p < root , q > root ==> LCA = root 如果 p = Max(p , q ) < ro原创 2015-08-09 17:22:31 · 672 阅读 · 0 评论 -
Kth Smallest Element in a BST
思路: 1 . 可以设置一个全局变量 , 中序遍历即可 2. 不是递归总序遍历,而是迭代式public class Solution { public int kthSmallest(TreeNode root, int k) { LinkedList<TreeNode> stack = new LinkedList<> (); stack = getLe原创 2015-08-09 16:49:26 · 337 阅读 · 0 评论 -
Path Sum II(****)
题目: root 到 叶子节点 sum = 给定值 , 返回各个节点值思路: 1. 前序遍历 , 用一个链表来存储依次遍历的值,直到叶子节点,然后计算链表的和 2. 也就是说,链表存的,就是root到当前 叶子节点所经历的节点的val 3. 所以,在遍历的过程 , 还必须记得remove List中值 == > List == Stack!public class Solution {原创 2015-08-09 15:48:52 · 251 阅读 · 0 评论 -
Binary Tree Inorder Traversal
题目:迭代中序遍历思路: 1. 递归 ==> 栈 2. 对于每个节点,向左遍历,所有节点入栈,直到叶子节点/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(原创 2015-08-08 16:32:44 · 293 阅读 · 0 评论 -
Construct Binary Tree from Preorder and Inorder Traversal
题目:根据中序遍历和前序遍历数组构建二叉树解题思路: 比如 : pre = { A , B , D , E , C} in= {D , B , E , A , C} 1. A 为root, 在中序遍历中 , 找到左子树节点为D, B , E , 右子树 : C 2. A左子树根节点 = B , 同理找到它的左右子树… 3. 如此递归/** * Definition for a binar原创 2015-08-05 22:21:52 · 381 阅读 · 0 评论