劍指offer 19 二叉樹的映象

2021-07-03 00:20:23 字數 739 閱讀 1167

先序遍歷樹的每個結點,若遍歷到的結點有子節點,則交換它的兩個結點。

遞迴方式

如果proot為null,則為空樹,返回;

如果proot不為null,交換proot左右結點,然後分別求左右子樹的映象;

非遞迴方式

步驟描述:借助棧

首先,將根節點proot入棧;

第一步:當佇列未空時執行第二步;

第二步:出棧交換左右節點,如果左右節點存在,則入棧,執行第一步。

#include #includeusing namespace std;

struct binarytreenode

;binarytreenode* createbinarytreenode(int value)

void connecttreenodes(binarytreenode* root ,binarytreenode* left, binarytreenode* right)

}

void destroytree(binarytreenode* root) }

void printfromtoptobottom(binarytreenode *proot) //層序遍歷

coutvoid mirroriteratively(binarytreenode* pnode)

}void test(char* testname, binarytreenode* pnode8)

{ cout<

劍指offer 19 二叉樹的映象

二叉樹的映象 映象即就是在鏡子中所成的像 實現 ps 搜尋二叉樹和普通二叉樹實現方法是相同的,只是兩種建樹過程有所不同,此處實現的是搜尋二叉樹。1.遞迴實現 pragma once include include include using namespace std template struct...

劍指offer19 二叉樹的深度

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。解題思路 做深度優先搜尋,找出最大路徑長度 coding utf 8 class treenode def init self,x self.val x self.lef...

面試題 劍指offer19 二叉樹的映象

二叉樹的映象就是要將左子樹調整到右子樹的地方 將右子樹的位置調整到左子樹的位置 首先先序遍歷這個數的每個節點,如果遍歷到節點有子節點 就交換它的兩個子結點,當交換完所有非結點之後,就得到了樹的映象 的實現 includeusing namespace std struct binarytreenod...