加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

算法系列15天速成 第十一天 树操作(上)

发布时间:2020-03-14 19:10:46 所属栏目:安全 来源:站长网
导读:我们可以对”线性结构“改造一下,变为”一个节点最多有一个前驱“和”多个后继“。哈哈,这就是我们今天说的”树“

break;
                    case Direction.Right:
                        if (tree.right != null)
                            throw new Exception("树的右节点不为空,不能插入");
                        else
                            tree.right = node;

break;
                }
            }

BinTreeAddNode(tree.left, node, data, direction);
            BinTreeAddNode(tree.right, node, data, direction);

return tree;
        }
        #endregion

#region 获取二叉树指定孩子的状态
        /// <summary>
/// 获取二叉树指定孩子的状态
/// </summary>
/// <typeparam></typeparam>
/// <param></param>
/// <param></param>
/// <returns></returns>
        public ChainTree<T> BinTreeChild<T>(ChainTree<T> tree, Direction direction)
        {
            ChainTree<T> childNode = null;

if (tree == null)
                throw new Exception("二叉树为空");

switch (direction)
            {
                case Direction.Left:
                    childNode = tree.left;
                    break;
                case Direction.Right:
                    childNode = tree.right;
                    break;
            }

return childNode;
        }

#endregion

#region 获取二叉树的深度
        /// <summary>
/// 获取二叉树的深度
/// </summary>
/// <typeparam></typeparam>
/// <param></param>
/// <returns></returns>
        public int BinTreeLen<T>(ChainTree<T> tree)
        {
            int leftLength;
            int rightLength;

if (tree == null)
                return 0;

//递归左子树的深度
            leftLength = BinTreeLen(tree.left);

//递归右子书的深度
            rightLength = BinTreeLen(tree.right);

if (leftLength > rightLength)
                return leftLength + 1;
            else
                return rightLength + 1;
        }
        #endregion

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读