小编给大家分享一下Java算法中二叉树的练习题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目一
解法
class Solution { int i = 0; int res = 0; public int kthSmallest(TreeNode root, int k) { method(root,k); return res; } public void method(TreeNode root, int k){ if(root==null) return ; method(root.left,k); i++; if(i==k){ res = root.val; return ; } method(root.right,k); }}
题目二
解法
class Solution { int sum = 0; public TreeNode convertBST(TreeNode root) { method(root); return root; } public void method(TreeNode root) { if(root==null){ return; } method(root.right); sum+=root.val; root.val = sum; method(root.left); }}
题目三
解法
class Solution { public boolean isValidBST(TreeNode root) { return method(root,null,null); } public boolean method(TreeNode root,TreeNode min,TreeNode max){ if(root==null) return true; if(min!=null&&root.val<=min.val) return false; if(max!=null&&root.val>=max.val) return false; return method(root.left,min,root)&&method(root.right,root,max); }}
题目四
解法
class Solution { public TreeNode searchBST(TreeNode root, int val) { if(root==null) return null; if(root.val==val) return root; if(root.val>=val){ return searchBST(root.left,val); } if(root.val<val){ return searchBST(root.right,val); } return null; }}
题目五
解法
class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { return method(root,val); } public TreeNode method(TreeNode root, int val){ if(root==null) return new TreeNode(val); if (root.val < val) root.right = insertIntoBST(root.right, val); if (root.val > val) root.left = insertIntoBST(root.left, val); return root; }}
题目六
算法
class Solution { public TreeNode deleteNode(TreeNode root, int key) { if (root == null) return null; if (root.val == key){ if (root.left == null) return root.right; if (root.right == null) return root.left; TreeNode minNode = getMin(root.right); root.right = deleteNode(root.right, minNode.val); minNode.left = root.left; minNode.right = root.right; root = minNode; }else if(root.val>key){ root.left = deleteNode(root.left,key); }else{ root.right = deleteNode(root.right,key); } return root; } TreeNode getMin(TreeNode node) { while (node.left != null) node = node.left; return node; } }
以上是“Java算法中二叉树的练习题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!