LeetCode 1469. 寻找所有的独生节点
题目描述
二叉树中,如果一个节点是其父节点的唯一子节点,则称这样的节点为 “独生节点” 。二叉树的根节点不会是独生节点,因为它没有父节点。
给定一棵二叉树的根节点 root ,返回树中 所有的独生节点的值所构成的数组 。数组的顺序 不限 。
示例 1:
输入:root = [1,2,3,null,4]
输出:[4]
解释:浅蓝色的节点是唯一的独生节点。
节点 1 是根节点,不是独生的。
节点 2 和 3 有共同的父节点,所以它们都不是独生的。
tree 中节点个数的取值范围是 [1, 1000]。
每个节点的值的取值范围是 [1, 10^6]。
一、解题关键词
树的递归计算
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List <Integer> result = new ArrayList<>();
public List<Integer> getLonelyNodes(TreeNode root) {
//递归 只有一个节点的时候 放入list
dfs(root);
return result;
}
TreeNode dfs(TreeNode root){
if(null == root){
return root;
}
//
TreeNode left = dfs(root.left);
TreeNode right = dfs(root.right);
if(null == left && right != null){result.add(right.val);}
if(null != left && right == null){result.add(left.val);}
return root;
}
}
2.知识点
遍历方式的总结
1、循环
2、递归