using
System;
using
System.Collections.Generic;
public
class
TreeNode {
public
long
val;
public
TreeNode left;
public
TreeNode right;
public
TreeNode(
long
x) {
val = x;
left =
null
;
right =
null
;
}
}
public
class
BinaryTree {
public
static
TreeNode perfectBinaryTree(
int
depth) {
if
(depth == 0)
return
new
TreeNode(0);
Queue<TreeNode> queue =
new
Queue<TreeNode>();
long
i = 0;
TreeNode root =
new
TreeNode(i);
queue.Enqueue(root);
while
(queue.Count!=0) {
int
size = queue.Count;
i++;
if
(i > depth) {
break
;
}
else
{
for
(
int
j = 0; j < size; j++) {
TreeNode node = queue.Dequeue();
node.left =
new
TreeNode(i);
node.right =
new
TreeNode(i);
queue.Enqueue(node.left);
queue.Enqueue(node.right);
}
}
}
return
root;
}
public
static
void
inOrderTraversal(TreeNode node) {
if
(node ==
null
)
return
;
inOrderTraversal(node.left);
Console.Write(node.val +
" "
);
inOrderTraversal(node.right);
}
public
static
void
Main(String[] args) {
int
N = 2;
TreeNode binaryTreeRoot = perfectBinaryTree(N);
inOrderTraversal(binaryTreeRoot);
}
}