101. 对称二叉树
题目链接:101. 对称二叉树 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
public boolean isSymmetric(TreeNode root) {
Deque<TreeNode> deque=new LinkedList<>();
deque.offerFirst(root.left);
deque.offerLast(root.right);
while(!deque.isEmpty()){
TreeNode leftNode=deque.pollFirst();
TreeNode rightNode=deque.pollLast();
if(leftNode==null&&rightNode==null){
continue;
}
if(leftNode==null||rightNode==null||leftNode.val!=rightNode.val)
return false;
deque.offerFirst(leftNode.left);
deque.offerFirst(leftNode.right);
deque.offerLast(rightNode.right);
deque.offerLast(rightNode.left);
}
return true;
}
}
222. 完全二叉树的节点个数
题目链接:222. 完全二叉树的节点个数 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
public int countNodes(TreeNode root) {
if(root==null)
return 0;
return countNodes(root.left)+countNodes(root.right)+1;
}
}
110. 平衡二叉树
题目链接:110. 平衡二叉树 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
public boolean isBalanced(TreeNode root) {
return getHeight(root)!=-1;
}
public int getHeight(TreeNode root){
if(root==null)
return 0;
int leftHeight=getHeight(root.left);
if(leftHeight==-1)
return -1;
int rightHeight=getHeight(root.right);
if(rightHeight==-1)
return -1;
if (Math.abs(leftHeight - rightHeight) > 1) {
return -1;
}
return Math.max(leftHeight, rightHeight) + 1;
}
}
257. 二叉树的所有路径
题目链接:257. 二叉树的所有路径 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
List<String> result=new ArrayList<>();
public List<String> binaryTreePaths(TreeNode root) {
deal(root,"");
return result;
}
public void deal(TreeNode node,String s){
if(node==null)
return;
if(node.left==null&&node.right==null){
result.add(new StringBuilder(s).append(node.val).toString());
return;
}
String tmp=new StringBuilder(s).append(node.val).append("->").toString();
deal(node.left,tmp);
deal(node.right,tmp);
}
}