题目地址:. - 力扣(LeetCode)
TreeNode属性:
在这段代码中,TreeNode
是一个自定义的二叉树节点类,它可能具有以下属性:
-
val
: 这是节点的值,通常是一个整数或其他数据类型。它表示二叉树节点存储的实际数据。 -
left
: 这是指向左子树的指针或引用。它指向当前节点的左子节点。 -
right
: 这是指向右子树的指针或引用。它指向当前节点的右子节点。
例如,以下是一个可能与代码中的 TreeNode
类对应的示例实现:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
在这个示例中,TreeNode
类只有一个 val
属性,以及 left
和 right
两个指向子节点的属性。当然,根据实际情况,TreeNode
类可能还有其他属性和方法来支持二叉树的操作和功能。
每个 TreeNode
实例代表二叉树中的一个节点,通过使用这些属性,可以构建具有层级结构的二叉树。通过设置节点的值、左子树和右子树的引用,可以建立起节点之间的连接,构成完整的二叉树数据结构。
解法一:递归排序
/**
* 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 {
public List<Integer> inorderTraversal(TreeNode root) {
//这里姑且理解,是new了一个ArrayList数组,但此时此刻他是空的
List <Integer> res= new ArrayList<Integer>();
//调用递归函数,res一开始的确是空的,但是在dfs函数中会给你添加数据,emm至于为啥我也不太懂
dfs(res,root);
return res;
//TreeNode似乎是他自己定义的一个类,有左孩子右孩子,
}void dfs(List<Integer>res,TreeNode root){
//终止条件
if(root==null){
return;
}
dfs(res,root.left);
res.add(root.val);
dfs(res,root.right);
}
}
解法二:
沉默了,我不太会,我的三百块钱.......
插个眼,这个博主蛮清晰的:. - 力扣(LeetCode)