1.二叉树宽度遍历
https://blog.csdn.net/weixin_39912556/article/details/82852749
2.二叉树深度遍历#
https://blog.csdn.net/weixin_39912556/article/details/82852749
3.二叉树最大深度
class Solution {
public int maxDepth(TreeNode root) {
if(root == null) {
return 0;
} else {
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return Math.max(left, right) + 1;
}
}
}
4.将有序数组转换为二叉搜索树
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
return sortedArrayToBST(nums, 0, nums.length);
}
private TreeNode sortedArrayToBST(int[] nums, int start, int end) {
if (start == end) {
return null;
}
int mid = (start + end) >>> 1;
TreeNode root = new TreeNode(nums[mid]);
root.left = sortedArrayToBST(nums, start, mid);
root.right = sortedArrayToBST(nums, mid + 1, end);
return root;
}
}
5.判断是否为对称二叉树
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return isMirror(root,root);
}
private boolean isMirror(TreeNode q,TreeNode p){
if(q==null&&p==null){
return true;
}
if(q==null||p==null){
return false;
}
return (q.val==p.val)&&isMirror(q.right,p.left)&&isMirror(q.left,p.right);
}
}
6.中序排列
中 :左中右
前:中左右
后:左右中
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
helper(root,res);
return res;
}
public void helper(TreeNode root,List<Integer> res){
if(root!=null){
if(root.left!=null){
helper(root.left,res);
}
res.add(root.val);
if(root.right!=null){
helper(root.right,res);
}
}
}
}