给定一个节点烧毁二叉树
Given a node Burn the binary tree
我正在尝试实现给定的问题 enter link description here 但没有得到所需的输出 我的程序出了什么问题。以编程方式,我试图查找目标是否不存在于左子树或右子树中,如果它存在于左子树 return 1 从左侧并将其子项推入队列,右树也类似。
Node root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.left = new Node(4);
root.left.right = new Node(5);
root.right.left = new Node(6);
root.right.right = new Node(7);
static Queue<Node> q=new LinkedList<Node>()
burnTheNodes(root,2);
int size=q.size();
for(int i=0;i<size;i++) {
Node curr=q.remove();
System.out.println(curr.data);
}
private static int burnTheNodes(Node root,int num) {
if(root==null) {
return 0;
}
if(root.data==num) {
System.out.println(root.data);
if(root.left!=null) {
q.add(root.left);
}
if(root.right!=null) {
q.add(root.right);
}
return 1;
}
int a=burnTheNodes(root.left, num);
if(a==1) {
int size=q.size();
for(int i=0;i<size;i++) {
Node curr=q.remove();
System.out.print(curr.data+"-");
if(curr.left!=null) {
q.add(curr.left);
}
if(curr.right!=null) {
q.add(curr.right);
}
}
if(root.right!=null) {
q.add(root.right);
}
System.out.println(root.data);
return 1;
}
int b=burnTheNodes(root.right, num);
if(b==1) {
int size=q.size();
for(int i=0;i<size;i++) {
Node curr=q.remove();
System.out.println(curr.data);
if(curr.left!=null) {
q.add(curr.left);
}
if(curr.right!=null) {
q.add(curr.right);
}
}
if(root.left!=null) {
q.add(root.left);
}
System.out.println(root.data);
return 1;
}
return 1;
}
输出是 - 它缺少节点 6 和 7。
2个
4-5-1
3
问题是在 main
的最后一个循环中,您没有 add children 到队列中,就像您在类似循环中所做的那样在 burnTheNodes
.
只要队列中有条目,你就应该继续这个过程,只要提取的节点有 children.
,你就应该继续添加条目
我正在尝试实现给定的问题 enter link description here 但没有得到所需的输出 我的程序出了什么问题。以编程方式,我试图查找目标是否不存在于左子树或右子树中,如果它存在于左子树 return 1 从左侧并将其子项推入队列,右树也类似。
Node root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.left = new Node(4);
root.left.right = new Node(5);
root.right.left = new Node(6);
root.right.right = new Node(7);
static Queue<Node> q=new LinkedList<Node>()
burnTheNodes(root,2);
int size=q.size();
for(int i=0;i<size;i++) {
Node curr=q.remove();
System.out.println(curr.data);
}
private static int burnTheNodes(Node root,int num) {
if(root==null) {
return 0;
}
if(root.data==num) {
System.out.println(root.data);
if(root.left!=null) {
q.add(root.left);
}
if(root.right!=null) {
q.add(root.right);
}
return 1;
}
int a=burnTheNodes(root.left, num);
if(a==1) {
int size=q.size();
for(int i=0;i<size;i++) {
Node curr=q.remove();
System.out.print(curr.data+"-");
if(curr.left!=null) {
q.add(curr.left);
}
if(curr.right!=null) {
q.add(curr.right);
}
}
if(root.right!=null) {
q.add(root.right);
}
System.out.println(root.data);
return 1;
}
int b=burnTheNodes(root.right, num);
if(b==1) {
int size=q.size();
for(int i=0;i<size;i++) {
Node curr=q.remove();
System.out.println(curr.data);
if(curr.left!=null) {
q.add(curr.left);
}
if(curr.right!=null) {
q.add(curr.right);
}
}
if(root.left!=null) {
q.add(root.left);
}
System.out.println(root.data);
return 1;
}
return 1;
}
输出是 - 它缺少节点 6 和 7。 2个 4-5-1 3
问题是在 main
的最后一个循环中,您没有 add children 到队列中,就像您在类似循环中所做的那样在 burnTheNodes
.
只要队列中有条目,你就应该继续这个过程,只要提取的节点有 children.
,你就应该继续添加条目