标签:c algorithm recursion binary-tree tree
我有这个算法,A和B是两个不同的二叉树根的地址.
每个节点都有一个值,指向左子树的指针和指向右子树的指针.
这是算法:
foo(A,B){
if (A == NULL){
return B;
}
if (B != NULL){
if(A->value > B->value){
return foo(B,A);
}
B->left = foo(A->right,B->left);
A->right = B;
}
return A;
}
我确实设法理解它将树B合并到树A的右子树,
但是我没有经理去了解价值观的规律性.
希望你能帮我这个,谢谢!
解决方法:
我相信目的是获取两个已排序的二叉树并将它们组合成一个排序的二叉树.
关键是比较if(A->值> B->值).此分支确保A参数将始终包含合并子树的点的较小值,这会强制对结果进行排序.
由于此算法从不遍历A-> left和B-> right,因此对所提供的两棵树似乎有一些额外的要求.一种可能性是预期它们不具有重叠范围.也就是说,一棵树的最小值必须大于另一棵树的最大值.或者要求可能是涉及子树内容的类似的其他事情.或者,值的类型可能仅限于两个值,如布尔值.
标签:c,algorithm,recursion,binary-tree,tree 来源: https://codeday.me/bug/20190722/1505393.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。