二叉树和多叉树

二叉树的类
class TreeNode{
    var $val;
    var $left = NULL;
    var $right = NULL;
    function __construct($val){
        $this->val = $val;
    }

}

二叉树的插入:将插入的值与节点比较大小,

若比节点小,则跟左子树再比较,如果左子树为空,则插入。

若比节点大,则跟右子树比较,如果右子树为空,则插入。

function InsertNode($num,$root){
	$p=$root;
	if($num<$root->val){
		if(is_null($root->left)){
			$root->left=new TreeNode($num);
			return ;
		}
		InsertNode($num,$root->left);
	}else{
		if(is_null($root->right)){
			$root->right=new TreeNode($num);
			return ;
		}
		InsertNode($num,$root->right);
	}
}
二叉树的查找:

将查找的值与节点比较大小,

若比节点小,则跟左子树再比较,如果左节点比他小,则结束。

若比节点大,则跟右子树再比较,如果右子点比他大,则结束。

若相等,则结束。

二叉树的删除:三种情况

第一种,删除的是叶子节点,则直接删除。

第二种是,删除的节点只有一个子节点,那就把他的父节点指向他的指针,指向他的子节点。

第三种是,删除的节点有两个子节点,这个是最恶心的。将右节点放到删除节点的位置,判断他是不是还有两个子节点,如果还有两个,重复上述步骤。


多叉树其实和这个差不多,只不过多一个节点而已。举例:三叉树

class TreeNode{
    var $val;
    var $child1= NULL;
    var $child2= NULL;

    var $child3= NULL;
    function __construct($val){
        $this->val = $val;
    }

}


实现的话其实是一样的,例如

新增$node1=new TreeNode(1);定义了一个值为1的节点,没有子节点

$node2=new TreeNode(1);

$node1->child1=$node2;给node1加节点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值