看到这个问题如下,并且不知道如何解决它:
给定一棵任意树,将它分成尽可能多的子树,然后分成 子树的节点数必须是偶数。
有什么想法吗?
答案 0 :(得分:1)
这样的事情可能是,遍历树,计算每个节点。如果计数是偶数,则添加节点。
List<Node> subTrees = new List<Node>();
int GetCount(Node root)
{
if (root == null) return 0;
return GetCount(root.Left) + GetCount(root.Right) + 1;
}
void BuildSubTrees(Node root)
{
if (root == null) return;
if(GetCount(root) % 2 == 0){subTrees.Add(root);}
BuildSubTrees(root.Left);
BuildSubTrees(root.Right);
}
我认为它是二叉树。如果不是,则代替left
或right
,完成所有neighbors
。
答案 1 :(得分:1)
我会将此问题解决如下: