寻找二叉树双亲结点

Posted 52dxer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找二叉树双亲结点相关的知识,希望对你有一定的参考价值。

/*
 * @Issue:  寻找X结点的双亲结点
 * @Author: 一届书生
 * @LastEditTime: 2020-02-25 16:50:27
 */
#include<iostream>
using namespace std;
#define type char
typedef struct node{
    type data;
    node *lchild,*rchild;
}Tree,*Pnode;

// 构造树[先序遍历:中左右]
void creat(Pnode &tree){
    type c;
    cin>>c;
    if(c==‘#‘)tree=NULL;
    else{
        tree=new Tree;
        tree->data=c;
        creat(tree->lchild);
        creat(tree->rchild);
    }
}

// 寻找X结点的双亲结点
void find(Pnode t,Pnode a){ //寻找a的双亲结点
    if(!t)return;
    if(t->lchild){
        if(t->lchild->data==a->data){
            cout<<t->data<<endl;
            return ;
        }
        find(t->lchild,a);
    }
    if(t->rchild){
        if(t->rchild->data==a->data){
            cout<<t->data<<endl;
            return ;
        }
        find(t->rchild,a);
    }
}

// 后序遍历
void display(Pnode &t1){
    if(t1){
    display(t1->lchild);
    display(t1->rchild);
    cout<<t1->data<<"  ";
    }
}


int main(){
    // 样例:AB#CD##E##F#GH###
    /*
            A
          /           B     F
                          C      G  
          /      /
         D    E  H

    */
    Pnode t,a;
    t=new Tree;
    a=new Tree;
    creat(t);

    display(t);
    cout<<endl;
    
    type x;
    cin>>x;
    a->data=x;
    a->lchild=NULL;
    a->rchild=NULL;

    find(t,a);
    return 0;
}

  

以上是关于寻找二叉树双亲结点的主要内容,如果未能解决你的问题,请参考以下文章

数据结构中,怎么写二叉树查找双亲的伪代码?急!

二叉树

普通树转换成二叉树

树与二叉树

二叉树的定义

(王道408考研数据结构)第五章树-第二节2:树与二叉树的存储结构