teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード編集

2016/08/30 01:50

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -18,20 +18,22 @@
18
18
  public BNode setRight(BNode node) { right_ = node; node.parent_ = this; return node; }
19
19
  public BNode setLeft(BNode node) { left_ = node; node.parent_ = this; return node; }
20
20
 
21
- public void print() { if ( left() != null ) left().print();
21
+ public String indent() { return parent_ == null ? "" : parent_.indent() + " "; }
22
- System.out.println(name_);
23
- if ( right() != null ) right().print(); }
24
22
 
23
+ public void print() { if ( left() != null ) { System.out.print(indent()); left().print(); }
24
+ System.out.print(indent()); System.out.println(name_);
25
+ if ( right() != null ) { System.out.print(indent()); right().print(); } }
26
+
25
27
  public static void main(String[] args) {
26
28
  BNode root = new BNode("root");
27
29
 
28
- root.setLeft(new BNode("left") )
30
+ root.setLeft( new BNode("left") )
29
- .setLeft( new BNode("left-left") )
31
+ .setLeft( new BNode("left-left") )
30
32
  .parent().setRight(new BNode("left-right"));
31
33
 
32
34
  root.setRight(new BNode("right"))
33
- .setRight(new BNode("right-right"))
35
+ .setRight(new BNode("right-right"))
34
- .parent().setLeft( new BNode("right-left") );
36
+ .parent().setLeft( new BNode("right-left"));
35
37
 
36
38
  root.print();
37
39
  }

1

コード修正

2016/08/30 01:50

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -5,16 +5,18 @@
5
5
  こんなカンジなのかしら:
6
6
  ```Java
7
7
  public class BNode {
8
- private BNode left_ = null;
8
+ private BNode left_ = null;
9
9
  private BNode right_ = null;
10
+ private BNode parent_ = null;
10
11
 
11
12
  private String name_;
12
13
 
13
14
  public BNode(String name) { name_ = name; }
14
- public BNode right() { return right_; }
15
+ public BNode right() { return right_; }
15
- public BNode left() { return left_; }
16
+ public BNode left() { return left_; }
17
+ public BNode parent() { return parent_; }
16
- public BNode setRight(BNode node) { right_ = node; return node; }
18
+ public BNode setRight(BNode node) { right_ = node; node.parent_ = this; return node; }
17
- public BNode setLeft(BNode node) { left_ = node; return node; }
19
+ public BNode setLeft(BNode node) { left_ = node; node.parent_ = this; return node; }
18
20
 
19
21
  public void print() { if ( left() != null ) left().print();
20
22
  System.out.println(name_);
@@ -22,8 +24,15 @@
22
24
 
23
25
  public static void main(String[] args) {
24
26
  BNode root = new BNode("root");
27
+
28
+ root.setLeft(new BNode("left") )
25
- root.setLeft(new BNode("left")).setLeft(new BNode("left-left"));
29
+ .setLeft( new BNode("left-left") )
26
- root.setRight(new BNode("right")).setRight(new BNode("right-right"));
30
+ .parent().setRight(new BNode("left-right"));
31
+
32
+ root.setRight(new BNode("right"))
33
+ .setRight(new BNode("right-right"))
34
+ .parent().setLeft( new BNode("right-left") );
35
+
27
36
  root.print();
28
37
  }
29
38