树题
IrvingTc
成功背后不是沧桑便是肮脏
展开
-
判断一颗树是否是二叉搜索树(Java)
题目描述给定一个二叉树,判断它是否是一个有效的二叉搜索树(BST)。假设BST定义如下:节点的左子树只包含键值小于节点键值的节点。节点的右子树只包含键值大于节点键值的节点。左子树和右子树也必须是二叉搜索树。解决代码:public boolean isValidBST(TreeNode root) { if (root == null) return true; St...原创 2019-03-16 20:32:29 · 3918 阅读 · 0 评论 -
二叉搜索树的中序遍历(Java)
题目描述给出一个二叉搜索树,返回这个树的中序遍历序列实现代码:public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); if(root == null) return list; Stack<T原创 2019-03-16 20:34:13 · 1994 阅读 · 0 评论 -
找出二叉搜索树中第k小的元素(Java)
题目描述给出一个二叉搜索树,返回这个二叉搜索树中第k大的元素解决代码:public int kthSmallest(TreeNode root, int k) { Stack<TreeNode> stack = new Stack<>(); while(root != null || !stack.isEmpty()) { wh...原创 2019-03-16 20:35:35 · 1195 阅读 · 0 评论 -
二叉搜索树的最近公共祖先(Java)
题目描述给定二叉搜索树(BST),找到BST中两个给定节点的最低公共祖先(LCA)。根据Wikipedia对LCA的定义:“在两个节点p和q之间定义的最低公共祖先是T中同时具有p和q作为后代的最低节点(在这里,我们允许一个节点作为其自身的后代)。”解决迭代实现由于二叉搜索树是有序的,左子树的所有节点均小于根节点,右子树的所有节点均大于根节点,所以当某个时刻,根节点的值大于p而小于q,说...原创 2019-03-17 09:18:36 · 1035 阅读 · 2 评论 -
二叉树的最近公共祖先(Java)
题目描述给定一棵二叉树,找出树中两个给定节点的最低公共祖先(LCA)。根据Wikipedia对LCA的定义:“在两个节点p和q之间定义的最低公共祖先是T中同时具有p和q作为后代的最低节点(在这里,我们允许一个节点作为其自身的后代)。”解决与找二叉搜索树的最近公共祖先类似,如果一个节点的左子树上有与p或q相等的节点且右子树上有与p或q相等的节点,说明此时该节点即为最近公共节点代码:pub...原创 2019-03-17 09:34:29 · 4217 阅读 · 0 评论 -
树的遍历(Java)
题目描述实现树的前序,中序,后序遍历解决前序和后序用的比较少,直接用递归了,中序用的比较多,用两种实现方式树的节点class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}三种遍历public class So...原创 2019-03-17 10:22:52 · 17703 阅读 · 1 评论