面试的时候的问题,当时脑子可能短路了,有个地方想不通,回来总结的时候发现自己有一点点2,不知道那时那刻面试官的心情是如何的崩溃的(可能是这么想的,这孩子是不是傻),哈哈,在这里重新更正下:
给你的节点形式
Node{
left;
right;
value;
}
一个二叉树,求所有左子树的和。
//先初始化一个节点
public class Node {
private Node left;
private Node right;
private int value;
public Node(Node left, Node right, int value) {
super();
this.left = left;
this.right = right;
this.value = value;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
// 写一个递归的方法
private static int sum =0;
public static int sumLeft(Node node){
if(node.getLeft()!=null){
sum +=node.getLeft().getValue();/./面试时想错了,想用node的value求和,很多判断条件都不行
}
if(node.getLeft()!=null){
sumLeft(node.getLeft());
}
if(node.getRight()!=null){
sumLeft(node.getRight());
}
return sum;
}
//写几个节点验证一下
public static void main(String[] args) {
Node node111 = new Node(null, null, 1);左子树
Node node112 = new Node(null, null, 2);右子树
Node node11 = new Node(node111, node112, 3);根节点左子树
Node node12 = new Node(null, null, 4);根节点右子树
Node node1 = new Node(node11, node12, 5);//根节点
System.out.println(sumLeft(node1));
}
其实就是这样的简单,哈哈,你距离成功就差一个拐角。